2012-12-16 21 views
4

我正在使用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)

回答

0

您可以创建lib/目录,需要您的轨道扩展下的文件:

# lib/extension.rb 
require 'extension/rails/custom_validator' 
0

在许多情况下,自定义验证器属于应用程序域。所以最好的地方是app/validators。有一个关于这个伟大的帖子在这里http://blog.codeclimate.com/blog/2012/02/07/what-code-goes-in-the-lib-directory/

+1

在我的情况下,海关验证可能属于许多应用领域,因为它是一般用途。所以它应该在'lib /'目录下(至少对我来说),甚至在阅读链接的文章和相关评论之后。 – Backo

相关问题