Ich habe das Gefühl, dass dies ein einfaches Problem ist, das ich aufgrund meines Missverständnisses der neuen ActiveRecord-Abfrageschnittstelle habe, aber nehmen Sie dieses Beispiel:
>> Category.first.recipes
=> [... ] # array of recipes
Jedoch:
>> Category.where(:id => 1).recipes
=> NoMethodError: undefined method `recipes' for #<ActiveRecord::Relation:0x000001033dc9e0>
Was ist denn hier los? Warum gibt meine where
Methode ein ActiveRecord::Relation
Objekt zurück? Wie kann ich die Objekte aus der Abfrage hier abrufen?
Lösung des Problems
Das ist eigentlich beabsichtigt.
Category.where(:id => 1)
# Is Equivalent to Category.all(:conditions => {:id => 1}})
Category.where(:id => 1).first
# Is equivalent of Category.first(:conditions => {:id => 1}})
Die Objekte werden nur abgerufen, wenn spezielle Methoden wie first, each usw. aufgerufen werden. Dies wird als verzögertes Laden bezeichnet, was großartig ist, wenn Sie Ihre Ansichten zwischenspeichern möchten. Lesen Sie hier mehr darüber, warum.
Keine Kommentare:
Kommentar veröffentlichen