在轨道上的ruby中命名范围与模块

时间:2011-04-20 06:37:35

标签: ruby-on-rails ruby

请说明命名范围和模块之间的示例差异。

1 个答案:

答案 0 :(得分:2)

如果要在Rails中打包多个条件,可以使用命名范围,例如:

named_scope :active, :conditions => ['active = ?', true]
named_scope :legal_age, :conditions => ['age > ?', 21]

命名范围的优点是可以将它们链接在一起。例如:

user.active.legal_age

模块用于将类似的事物组合在一起。所以通常如果你的代码需要在你的应用程序中共享,你可以在你的lib目录中定义一个模块并放置诸如的类。

module MyModule
   class MyClass
     ....
   end
end

模块有其他用例,这是我的经验中的主要用例。