Ich habe ein Event-Modell mit parent_id
und date
Attribute:Rails: Selbstreferenz Eltern/Kind-Hierarchie, ohne durch Tabelle
Event.rb
has_many :children, :class_name => "Event"
belongs_to :parent, :class_name => "Event"
Ich habe keine Probleme event.parent
oder event.children
aufrufen. Ein Child-Event hat niemals selbst ein Kind.
Ich versuche, diesem Modell einen Bereich hinzuzufügen, damit ich das Kind mit dem nächsten zukünftigen Datum für jedes Elternelement zurückgeben kann. Etwas wie:
scope :future, -> {
where("date > ?", Date.today)
}
scope :closest, -> {
group('"parent_id"').having('date = MAX(date)')
}
Event.future.closest ==> returns the closest child event from every parent
Aber der oben :closest
Umfang zurückkehrt mehr als ein Kind pro Elternteil.
Brauchen Sie mehr als die unmittelbaren Kinder (Enkel, Enkel usw.)? – max
Nein - ein Kind kann kein Kind haben. –
Die Schienen Anleitungen erklären, wie dies zu tun ist: http://guides.rubyonrails.org/association_basics.html#self-joins. Es gibt auch einen Railscast. – baron816