我正在使用Ruby on Rails 3.2.9。解决“Trouble on extending Rails in a sub-directory of the 'lib' directory”的一种方式涉及到Custom Validators是陈述如下代码(注意该文件所在的目录)这是在'lib /'目录中实现自定义验证程序的正确方法吗?
# lib/extension/rails/custom_validator.rb
class CustomValidator < ActiveModel::EachValidator
# ...
end
和把config.autoload_paths += %W(#{config.root}/lib/extension/rails)
声明中config/application.rb
文件。这样,启动服务器时正确加载CustomValidator
,并且我的lib/
目录按照我的预期进行组织。
但是,我想知道这是否是在RoR中做出这些事情的“适当”/“正确”方式。换句话说,是否有更好的方法来完成相同的目标?
注:为了在文件代码组织,我想给命名空间的类的,像下面这样:
# lib/extension/rails/custom_validator.rb
module Extension
module Rails
class CustomValidator < ActiveModel::EachValidator
# ...
end
end
end
但是,通过使用上面的代码,它似乎有ISN使无法正常工作,即使我在config/application.rb
文件中声明config.autoload_paths += %W(#{config.root}/lib)
。
在我的情况下,海关验证可能属于许多应用领域,因为它是一般用途。所以它应该在'lib /'目录下(至少对我来说),甚至在阅读链接的文章和相关评论之后。 – Backo