GOOGLE ADS

Freitag, 22. April 2022

Rails 3, Active Record-Abfrage gibt ActiveRecord::Relation-Objekt anstelle von Objekten zurück

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 whereMethode ein ActiveRecord::RelationObjekt 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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...