Ruby on rails 如何重新使用命名作用域?

Ruby on rails 如何重新使用命名作用域?,ruby-on-rails,activerecord,named-scope,Ruby On Rails,Activerecord,Named Scope,您好,我的用户模型中有一个名为_scope的,如下所示 named_scope :by_gender, lamdba { |gender| { :conditions => { :gender => gender } } } 我想创建另外两个命名作用域,它们重复使用这个作用域 named_scope :male, lambda { by_gender('male') } named_scope :female, lambda { by_gender('female') } 知

您好,我的
用户
模型中有一个名为_scope的
,如下所示

named_scope :by_gender, lamdba { |gender| { :conditions => { :gender => gender } } }
我想创建另外两个命名作用域,它们重复使用这个作用域

named_scope :male,   lambda { by_gender('male') }
named_scope :female, lambda { by_gender('female') }

知道怎么做吗?

您可以提供执行硬连线参数传递的类方法:

def self.male
    by_gender('male')
end

def self.female
    by_gender('female')
end
或者,由于您使用的命名范围非常简单,您可以删去按性别范围,只需使用:

named_scope :male, :conditions => {:gender => 'male'}
named_scope :female, :conditions => {:gender => 'female'}

第二种选择当然是有条件的,即您实际上不需要在任何其他地方明确地要求by_gender作用域。

Hmmm提供类方法是有意义的。它将返回一个关联代理,这样我甚至可以将它们链接在一起。谢谢