我正在使用 Ruby on Rails 3.2.9。解决与自定义验证器相关的“在 'lib' 目录的子目录中扩展 Rails 时遇到问题”的方法是声明以下代码(注意文件所在的目录)
# 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
CustomValidator
但是,通过使用上面的代码,即使我config.autoload_paths += %W(#{config.root}/lib)
在config/application.rb
文件中声明,似乎也没有一种简单的方法可以使其工作。