Si j'ai un modèle A avec un attribut X et un modèle enfant de A appelé B avec un attribut Y, comment puis-je ordonner toutes les instances de A par Y et X ?
Réponses
Trop de publicités?Vous pouvez utiliser default_scope
pour ordonner toutes les instances de votre modèle par une association. Il suffit de passer le nom du modèle associé à la fonction :includes
et ajuster le paramètre de votre commande :
default_scope :include => 'record', :order => 'records.attribute'
Cependant, default_scope
n'est pas très recommandé. Une approche plus propre serait de créer une méthode de classe dans votre modèle parent que vous pouvez appeler à partir de vos contrôleurs :
def self.all_ordered_by_child
includes(:records).order('records.attribute DESC')
end
Il vous suffira de mettre à jour toutes les instances qui appellent tous les enregistrements du modèle parent.