Wenn ich eine Sammlung von Datensätzen von einer Active Record-Abfrage zurückgegeben habe, wie kann ich auf einen dieser Datensätze zugreifen, wenn ich seine ID kenne?Wie kann ich einen Datensatz nach ID aus einer Active Record-Datensatzgruppe abrufen?
Antwort
Es gibt zwei Möglichkeiten, dies zu tun. Angenommen, Sie haben ein Active Beziehung records
genannt und suchen nach id
:
Sie die ActiveRecord::FinderMethods#find Methode verwenden können, aber dies in einem anderen Aufruf der Datenbank führen wird:
records.find(id)
Sie kann die Sammlung durchsuchen, ohne die Datenbank zu verwenden, indem Sie Rubys Enumerable#find Methode wie folgt aufrufen:
records.find { |r| r.id == id }
Obwohl sie den gleichen Namen, wir Aufruf zwei verschiedene find
Verfahren in dem obigen Beispiel. Der erste wird mehr Datenbankressourcen verwenden, während der zweite mehr Anwendungsserverressourcen verwendet. Ich bin mir nicht sicher, welcher am Ende schneller ist.
Ich würde hinzufügen, dass trotz des gleichen Namens 1 ist [ActiveRecord :: FinderMethods # finden] (http://api.rubyonrails.org/v5.1/classes/ActiveRecord/FinderMethods.html#method-i-find) und das spätere ist [Enumerable # find] (http://ruby-doc.org/core-2.4.2/Enumerable.html#method-i-find). – max
TableName.find(id)
sollte es tun.
Oder, wenn Sie bereits eine Reihe von Datensätzen in einer Active Record-Abfrage können Sie das mit der bekannten ID herausziehen wie:
active_record_query = User.where(first_name: "Jim")
record = active_record_query.where(id: record_id).first
Ja. Sie können die Suchmethode verwenden.
# Assuming you were retrieving an ActiveRecordRelation s
s = MyRecord.where(name: "test")
s.find(id)
Für weitere Informationen siehe: http://api.rubyonrails.org/v5.0/classes/ActiveRecord/FinderMethods.html#method-i-find
Gesetzt ich eine Ergebnismenge von Benutzern haben, und ich möchte den Benutzer mit ID = 3 in diesem Satz zu finden:
foo = User.all
user3 = foo.find {|x| x.id == 3}
Natürlich, wenn Sie die ID kennen, können Sie es einfach finden. Angenommen, ich habe eine Tabelle Benutzer und ich weiß, dass die ID des Benutzers Ich mag 3:
user3 = User.find(3)
Sie Datensätze mit aus der Datenbank mit ActiveRecord::FinderMethods#find finden.
Thing.find(1)
Abfrage der Datenbank für SELECT things.* FROM things WHERE things.id = 1
. Und erhöhe einen ActiveRecord::NotFoundError
, wenn der Datensatz nicht gefunden werden kann. Suchen kann auch mit einer Liste von IDs verwendet werden.
Wenn Sie eine Beziehung haben, die bereits aus der Datenbank geladen wurde, verwenden Sie Enumerable#find oder den Alias #detect
. ActiveRecord :: Relation enthält Enumerable, so dass es auch funktioniert, wenn Sie nicht explizit in ein Array mit .to_a
umwandeln.
Übergibt jeden Eintrag in Enum zu blockieren. Gibt den ersten zurück, für den der Block nicht falsch ist. Wenn kein Objekt übereinstimmt, ruft ifnone auf und gibt sein Ergebnis zurück, wenn es angegeben wird, oder gibt andernfalls nil zurück.
Beispiel:
[1,2,3,4].find(&:even?) # => 2
User.all.load.find { |u| u.id == 1 }
- 1. Android Firebase wie kann man einen Datensatz nach ID abrufen?
- 2. Wie kann ich einen Wert aus einer Eigenschaft mithilfe von Active Directory abrufen?
- 3. Laravel Kann nicht einen bestimmten Datensatz aus einem Formular abrufen
- 4. Wie kann ich einen Spaltenwert aus einer Tabelle abrufen?
- 5. Wie kann ich eine Verknüpfung einen vorhandenen Datensatz abrufen lassen?
- 6. Wie ID ID-Datensatz mit While-Schleife in Java abrufen
- 7. Wie kann ich SQL für jede ID in einer anderen Tabelle einen Datensatz einfügen?
- 8. Wie zeigt man einen Datensatz pro Tag nach ID?
- 9. Wie kann ich die autoincrement-ID, wenn ich einen Datensatz in einer Tabelle über jdbctemplate einfügen
- 10. Wie kann ich einen Wert aus einem PHP-Array abrufen?
- 11. Wie kann ich den letzten eindeutigen Datensatz aus einer Tabelle nicht in 1NF abrufen?
- 12. Wie erstelle ich einen Datensatz aus einer Textmenge?
- 13. Wie lösche ich automatisch einen Datensatz aus einer Struktur nach einer bestimmten Zeit in C++
- 14. Wie kann ich einen Datensatz genauso aktualisieren wie einen anderen Datensatz in derselben Tabelle?
- 15. Alle direkten Berichte aus Active Directory abrufen
- 16. Azure-Active Directory-Token aus einer Elektronen-App abrufen
- 17. Wie kann ich alle Datensätze aus Cloudkit abrufen
- 18. Wie kann man bestimmte Datenmengen aus einem großen Datensatz abrufen?
- 19. Wie kann ich einen Artikel/Datensatz duplizieren?
- 20. Wie kann ich mehrzeiligen Datensatz aus einer Textdatei mit Spark
- 21. Nach dem Zufallsprinzip einen Datensatz aus dem Active Directory-Anwendungsmodus auswählen
- 22. Wie kann ich am besten Benutzerdaten aus Active Directory in Verbindung mit SQL Server-Daten abrufen?
- 23. Wie schreibe ich einen Abstand active record
- 24. Wie kann ich gelöschte Objekte aus Active Directory mit Ruby abrufen?
- 25. Abrufen von Benutzerdetails aus Active Directory
- 26. Wie kann ich Daten aus einer Datei abrufen?
- 27. Google Blatt nach ID abrufen?
- 28. Wie kann ich einen Wert aus String mit Regex abrufen?
- 29. Grails: Wie kann ich Datensätze nach einer bestimmten Eigenschaft abrufen?
- 30. In GraphQL, wie ich nach einem zufälligen Datensatz abfragen
Ja, Sie sicher können. – mudasobwa