Y a-t-il un moyen de nier les étanches nommées à l'intérieur de différents modèles?
Exemple: P>
class Company has_many :employees named_scope :with_employees, :include => :employees end class Employee belongs_to :company belongs_to :spouse named_scope :with_spouse, :include => :spouse end class Spouse has_one :employee end
3 Réponses :
Vous avez besoin de définir tout le temps de toutes vos conditions. Mais vous pouvez définir une méthode pour combiner certaines nommées_SPOPE
class Company has_many :employees named_scope :with_employees, :include => :employees named_scope :limit, :lambda{|l| :limit => l } def with_employees_with_spouse with_employees.with_spouse end def with_employees_with_spouse_and_limit_by(limit) with_employees_with_spouse.limit(limit) end end class Employee belongs_to :company belongs_to :spouse named_scope :with_spouse, :include => :spouse end class Spouse has_one :employee end
Dans votre méthode_employe_with_spouse, vous êtes enchaîné avec_employés avec le sous-model avec Suboudel With_Spouse. Était-ce voulu, car c'est ce que je cherche un moyen de faire.
oui mon exemple n'est pas vraiment génial mais il n'y a pas vraiment bon moyen de faire :(
Vous pouvez utiliser le scoping par défaut
Company.find(1) # includes => [:employee => :spouse]
Je recommanderais de rester loin default_scope. C'est difficile à faire face lorsque vous en avez besoin et cela augmente plus souvent que vous ne le pensez.
Je affinerais cela pour n'utiliser que par défaut_scope pour la commande et ne jamais l'utiliser pour affiner ou limiter les enregistrements à une requête.
Essayez ceci
De ce que je connais Rails3 Finders M.Onkey.org/2010/ 1/22 / Active-Record-Query-Interface s'est amélioré dans la zone de chaînage du filtre.