Ruby on Rails

Geavanceerde ActiveRecord-query's

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

28 gespreksvragen·
Mid-Level
1

Welke ActiveRecord-methode haalt een record op aan de hand van de primaire sleutel en gooit een exception als het niet wordt gevonden?

Antwoord

De find-methode haalt een record op aan de hand van de primaire sleutel en gooit een ActiveRecord::RecordNotFound-exception als het record niet bestaat. Dit zorgt ervoor dat de code expliciet faalt in plaats van door te gaan met een nil-waarde. Om de exception te vermijden en in plaats daarvan nil terug te geven, gebruik je find_by(id: value).

2

Wat is het belangrijkste verschil tussen find_by en where.first in ActiveRecord?

Antwoord

find_by geeft direct een enkel record of nil terug, terwijl where.first een ActiveRecord-relatie teruggeeft en vervolgens first aanroept om het eerste resultaat te krijgen. In de praktijk genereert find_by een geoptimaliseerde query met LIMIT 1, terwijl where mogelijk meer gegevens laadt voordat het eerste element wordt geselecteerd.

3

Hoe geef je meerdere voorwaarden door aan de where-methode in ActiveRecord?

Antwoord

De where-methode accepteert een hash met meerdere sleutels om meerdere voorwaarden op te geven die met AND worden gecombineerd. Bijvoorbeeld, User.where(status: 'active', role: 'admin') genereert WHERE status = 'active' AND role = 'admin'. Voor OR-voorwaarden gebruik je or of ruwe SQL-query's.

4

Wat is het N+1-probleem in ActiveRecord?

5

Welke methode gebruik je om het N+1-probleem op te lossen door associaties vooraf te laden?

+25 gespreksvragen

Beheers Ruby on Rails voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis