2009-05-13 9 views
3

Kann ich eine Liste von Objekten nach einer Eigenschaft eines zugeordneten Objekts sortieren?Sortierliste von Objekten nach Eigenschaft für verknüpftes Objekt

Zum Beispiel mit der folgenden Klasse

class RosterSlot < ActiveRecord::Base 
    belongs_to :event 
    belongs_to :skill 
    belongs_to :person 
end 

ich so etwas wie RosterSlot.find tun wollen (: all,: order => skill.name)

die Active bedeutet braucht ein zu tun beitreten und bestellen.

Irgendwelche Ideen?

Antwort

4

Ja, Sie können die Option include verwenden, um den Join durchzuführen.

Die Option: order nimmt ein SQL-Fragment, also ist skills eine Referenz auf den Namen der Plural-Datenbank-Tabelle.

Das: include nimmt ein Array von Active Record Associations.

Weitere Informationen finden Sie unter http://www.railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002313&name=find.

+0

Das war es, was ich suchte, so offensichtlich jetzt. Vielen Dank. – lyallward

3

Sie können dies auch in Ruby mithilfe der Sortiermethode tun.

RosterSlot.all.sort { |x,y| x.skill.name <=> y.skill.name } 

Ich persönlich würde Ihre db haben tun die Sortierung, aber diese Methode kann bei der Sortierung eine Ergebnismenge von Modellobjekten nützlich sein, die durch ein anderes Verfahren dann die Activerecord :: Base finden zurückgegeben wurden.

+0

Sie sollten zumindest sicherstellen, dass Sie an den Skills teilnehmen, oder Sie werden die Datenbank zweimal für jede Iteration der Sortierung treffen. – Chuck

Verwandte Themen