Where should Rails 3 custom validators be stored?

I've seen docs/websites show that custom validators should go in a /lib or /lib/validators directory of a project. I've found (by reading an answer to another post) that they only seem to work in config/initializers. Does anyone know, or have a pointer to official documentation that shows where custom validators should live?


If you place your custom validators in app/validators they will be automatically loaded without needing to alter your config/application.rb file.


If you add this to your /config/application.rb file:

config.autoload_paths += %W["#{config.root}/lib/validators/"]

Then Rails will automatically load your validators on start up (just like /config/initializers/), but you keep the clean structure of having your validators in one nice, well named spot.


lib/validators seems by far the cleanest. However you may need to load them in before your models, so probably from an initializer.


Here's the official docs about custom validations. AFAIK its a good practice to keep them in the relevant models.