2009-10-26 55 views
3

嗨我有一個named_scope在我的User模型如下。如何重新使用命名的作用域?

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

我想創建另外兩個命名範圍從而重新使用一個類似的東西,

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

任何想法,該怎麼辦?

回答

3

您可以提供類方法執行硬連接參數傳遞:

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作用域。

+0

嗯,提供類方法是有道理的。它將返回一個關聯代理,以便我可以將它們鏈接在一起。謝謝。 – Waseem 2009-10-26 16:20:09