Gen*_*Gen 4 ruby activerecord ruby-on-rails
您好如何构建一个所有模型都常见的named_scope.
我把这个代码放在lib/has_common_named_scopes.rb:
module HasCommonNamedScopes
def self.included(base)
base.class_eval {
# Named scopes
named_scope :newest, :order => "#{base.table_name}.created_at DESC"
named_scope :freshest, :order => "#{base.table_name}.updated_at DESC"
named_scope :limit, lambda { |limit| {:limit => limit} }
}
end
end
Run Code Online (Sandbox Code Playgroud)
然后在我需要的每个模型中包含模块:
class MyModel < ActiveRecord::Base
include HasCommonNamedScopes
Run Code Online (Sandbox Code Playgroud)
我建议您base.table_name在引用这些命名范围中的列时使用来限定表,就像我在示例中所做的那样.否则,当您将这些命名范围与其他表中连接的其他范围组合时,会遇到模糊引用的问题.
更新:
scope用于Rails> 3并named_scope在以前的版本中使用.
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |