3 votes

Comment réutiliser les champs d'application nommés ?

Bonjour, j'ai un named_scope dans mon User comme suit.

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

Je veux créer deux autres scopes nommés qui réutilisent celui-ci, quelque chose comme,

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

Une idée de ce qu'il faut faire ?

3voto

workmad3 Points 12974

Vous pouvez fournir des méthodes de classe qui effectuent le passage d'argument câblé :

def self.male
    by_gender('male')
end

def self.female
    by_gender('female')
end

ou, comme le named_scope que vous utilisez est si simple, vous pourriez supprimer le by_gender scope et utiliser simplement :

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

La deuxième option est bien sûr conditionnée par le fait que vous n'exigez pas explicitement la portée by_gender ailleurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X