在导轨上的红宝石中,命名为scope vs module

问题描述

| 请举例说明命名范围和模块之间的区别。

解决方法

如果要在Rails中打包多个条件,则可以使用Named范围,例如:
named_scope :active,:conditions => [\'active = ?\',true]
named_scope :legal_age,:conditions => [\'age > ?\',21]
命名范围的优点是您可以将它们链接在一起。例如:
user.active.legal_age
模块用于将相似的事物组合在一起。因此,通常,如果您有需要在应用程序之间共享的代码,则可以在lib目录中定义一个模块,并放置诸如之类的类。
module MyModule
   class MyClass
     ....
   end
end
模块还有其他用例,这是我的主要经验。