93 我已经看到docs / websites显示自定义验证器应该放在项目的/lib或/lib/validators目录中。我发现(通过阅读另一篇文章的答案)他们似乎只在工作config/initializers。是否有人知道或有一个指向官方文档的指针,该文档显示了自定义验证器应存放的位置? ruby-on-rails validation customvalidator — 丹尼尔·D source 如何更改接受的答案标志? — JJD
220 如果将自定义验证器放入其中,app/validators它们将自动加载而无需更改config/application.rb文件。 — gbc source 我不知道是否需要为此添加一些gem / config,但是在Rails 3.2.8下这是行不通的。具体来说,仅将您的验证程序放入app / validators / ???。rb中是行不通的。 — 道格2012年 17 道格(Doug)尝试使用命名验证器类的方式命名验证器文件,但要强调:MyCoolValidator转到app / validators / my_cool_validator.rb — 等效 14 @Doug,您需要重新启动服务器。自动加载路径会在初始化时扩展,因此只有在执行此操作后,新的子文件夹才会被拾取。 — 2012年 我也想对ActiveModel :: Validations :: HelperMethods进行猴子补丁,以为我的新验证添加帮助程序(例如,AddressValidator的validates_address)。当我在app / validators / address_validator.rb中同时包含Monkeypatch和Validator时,仅加载AddressValidator对象,而不加载Monkeypatch。你们也有同样的行为吗? — jshkol 1 spring stop在Rails 5.2中对我来说是必需的,否则不会被接受。 — 杰克·金塞拉
15 如果将此添加到/config/application.rb文件中: config.autoload_paths += %W["#{config.root}/lib/validators/"] 然后,Rails将在启动时自动加载您的验证器(就像/ config / initializers /一样),但是您要保持干净的结构,即将验证器放在一个不错的,有名的位置。 — gunit888 source 9 好主意,但是您的代码需要一些清理: config.autoload_paths += %W(#{config.root}/lib/validators/) — aNoble
4 这是有关自定义验证的官方文档。AFAIK将其保留在相关模型中是一个好习惯。 — Shreyas source 5 除非它们适用于多种型号,否则应将它们保留在其他位置以保持干燥。 — Andrew Marshall 它们大概就是这些东西,因为否则为它们创建单独的类没有什么意义。 — 2011年 7 @Jakub是的:单一责任原则 — mattwynne 2011年 2 官方文档的链接已损坏。这是该文档的当前位置;guides.rubyonrails.org/... — Stijnster