Rails lib目录

GTD*_*Dev 27 model-view-controller ruby-on-rails require

关于lib目录的问题.

使用lib目录有什么好的做法?
什么时候应该在app/models或app/helpers上使用?
并且有些相关如何让Rails 3包含lib目录中的文件?

谢谢

bri*_*ker 27

lib目录(我最常使用它)的一个用途是在模型之间共享代码以保持DRY.例如,如果要tag_tokens在许多不同模型上定义属性以与标记化器输入一起使用,则可以将其放在"tag_accessor.rb"或其他内容中,将其放入/lib',然后将其包含在内include TagAccessor.ruby文件可能如下所示:

module TagAccessor
  def tag_tokens
    tags.map(&:name).join(',')
  end

  def tag_tokens=(names)
    self.tag_ids = names.split(",").uniq
  end
end
Run Code Online (Sandbox Code Playgroud)

(这是我的一个应用程序的示例,这就是为什么它如此具体).然后在Rails 3中加载/ lib文件夹,将其放在application.rb:

 config.autoload_paths += %W(#{config.root}/lib)
Run Code Online (Sandbox Code Playgroud)