【发布时间】:2011-07-12 21:42:07
【问题描述】:
我看到文档/网站显示自定义验证器应该放在项目的 /lib 或 /lib/validators 目录中。我发现(通过阅读另一篇文章的答案)他们似乎只在config/initializers 中工作。有谁知道,或者有一个官方文档的指针,显示自定义验证器应该放在哪里?
【问题讨论】:
标签: ruby-on-rails validation customvalidator
我看到文档/网站显示自定义验证器应该放在项目的 /lib 或 /lib/validators 目录中。我发现(通过阅读另一篇文章的答案)他们似乎只在config/initializers 中工作。有谁知道,或者有一个官方文档的指针,显示自定义验证器应该放在哪里?
【问题讨论】:
标签: ruby-on-rails validation customvalidator
如果您将自定义验证器放在 app/validators 中,它们将自动加载,而无需更改您的 config/application.rb 文件。
【讨论】:
spring stop 在 Rails 5.2 中对我来说是必需的,否则不会被选中。
如果您将此添加到您的 /config/application.rb 文件中:
config.autoload_paths += %W["#{config.root}/lib/validators/"]
Rails 会在启动时自动加载您的验证器(就像 /config/initializers/ 一样),但您可以保持将验证器放在一个漂亮且命名良好的位置的简洁结构。
【讨论】:
config.autoload_paths += %W(#{config.root}/lib/validators/)
lib/validators 似乎是迄今为止最干净的。但是,您可能需要在模型之前加载它们,因此可能来自初始化程序。
【讨论】:
这是关于自定义验证的official docs。 AFAIK 将它们保留在相关模型中是一种很好的做法。
【讨论】: