Ich möchte einen bestimmten Datensatz innerhalb eines ActiveRecord::Relation
-Objekts finden, damit ich das Attribut dieses Datensatzes abrufen kann.
Das Folgende funktioniert, aber das Problem ist, dass es die Datenbank erneut mit der find_by
-Anweisung trifft. Es sollte nicht müssen. Es sollte eine Möglichkeit für Schienen geben, das Objekt innerhalb des Objekts ActiveRecord::Relation
zu finden, anstatt die Datenbank erneut abfragen zu müssen.
Wenn Sie find_by
aufrufen, wird es die Datenbank treffen.
Das relation-Objekt wird verwendet, um die db-Ergebnisse zu laden.
Sobald sie für den Aufruf all
geladen wurden, können Sie im resultierenden Array suchen.
Wenn Sie in Ihrem Rubin-Prozess nach den Ergebnissen suchen möchten, die sich bereits im Speicher befinden, sollten Sie innerhalb des Arrays mit find
oder detect
suchen (die dasselbe tun). Ich neige dazu, detect
zu verwenden, daher ist klar, dass es nicht auf die Datenbank trifft:
Sie können immer where
-Klausel verwenden. Zum Beispiel
Um die @blog-Instanz mit der ID 1 zu erhalten (und von der Datenbank neu zu laden). Denken Sie daran, dass diese Abfrage schnell, effizient und sicher ist (falls Sie params[:id]
anstelle der fest codierten ID hinzufügen möchten).
Tags und Links ruby ruby-on-rails activerecord