【问题标题】:How do I re-use named scopes?如何重用命名范围?
【发布时间】:2009-10-26 15:10:10
【问题描述】:

您好,我的User 模型中有一个named_scope,如下所示。

named_scope :by_gender, lamdba { |gender| { :conditions => { :gender => gender } } }

我想创建另外两个命名范围,它们可以重新使用这个类似,

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

知道该怎么做吗?

【问题讨论】:

    标签: ruby-on-rails activerecord named-scope


    【解决方案1】:

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

    def self.male
        by_gender('male')
    end
    
    def self.female
        by_gender('female')
    end
    

    或者,由于您使用的 named_scope 非常简单,您可以删除 by_gender 范围并简单地使用:

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

    第二个选项当然取决于您实际上在其他任何地方都没有明确要求 by_gender 范围。

    【讨论】:

    • 嗯,提供类方法很有意义。它将返回一个关联代理,因此我什至可以将它们链接在一起。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多