问题
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?
回答1:
If you place your custom validators in app/validators
they will be automatically loaded without needing to alter your config/application.rb
file.
回答2:
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.
回答3:
lib/validators
seems by far the cleanest. However you may need to load them in before your models, so probably from an initializer.
回答4:
Here's the official docs about custom validations. AFAIK its a good practice to keep them in the relevant models.
来源:https://stackoverflow.com/questions/5263239/where-should-rails-3-custom-validators-be-stored