Ruby on Rails

Fortgeschrittene ActiveRecord-Abfragen

Query interface, where, joins, includes, eager loading, N+1-Problem, transactions, locking (optimistic/pessimistic)

28 Interview-Fragen·
Mid-Level
1

Welche ActiveRecord-Methode ruft einen Datensatz anhand seines Primärschlüssels ab und löst eine Exception aus, wenn er nicht gefunden wird?

Antwort

Die find-Methode ruft einen Datensatz anhand seines Primärschlüssels ab und löst eine ActiveRecord::RecordNotFound-Exception aus, wenn der Datensatz nicht existiert. Dadurch wird sichergestellt, dass der Code explizit fehlschlägt, anstatt mit einem nil-Wert fortzufahren. Um die Exception zu vermeiden und stattdessen nil zurückzugeben, verwende find_by(id: value).

2

Was ist der Hauptunterschied zwischen find_by und where.first in ActiveRecord?

Antwort

find_by gibt direkt einen einzelnen Datensatz oder nil zurück, während where.first eine ActiveRecord-Relation zurückgibt und dann first aufruft, um das erste Ergebnis zu erhalten. In der Praxis erzeugt find_by eine optimierte Abfrage mit LIMIT 1, wohingegen where möglicherweise mehr Daten lädt, bevor das erste Element ausgewählt wird.

3

Wie übergibt man mehrere Bedingungen an die where-Methode in ActiveRecord?

Antwort

Die where-Methode akzeptiert einen Hash mit mehreren Schlüsseln, um mehrere Bedingungen anzugeben, die mit AND kombiniert werden. Zum Beispiel erzeugt User.where(status: 'active', role: 'admin') WHERE status = 'active' AND role = 'admin'. Für OR-Bedingungen verwende or oder rohe SQL-Abfragen.

4

Was ist das N+1-Problem in ActiveRecord?

5

Welche Methode sollte man verwenden, um das N+1-Problem durch Vorladen der Assoziationen zu lösen?

+25 Interview-Fragen

Meistere Ruby on Rails für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten