Ruby on Rails

Query ActiveRecord avanzate

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

28 domande da colloquio·
Mid-Level
1

Quale metodo di ActiveRecord recupera un record tramite la sua chiave primaria e solleva un'eccezione se non viene trovato?

Risposta

Il metodo find recupera un record tramite la sua chiave primaria e solleva un'eccezione ActiveRecord::RecordNotFound se il record non esiste. Questo garantisce che il codice fallisca in modo esplicito invece di continuare con un valore nil. Per evitare l'eccezione e restituire nil al suo posto, usa find_by(id: value).

2

Qual è la differenza principale tra find_by e where.first in ActiveRecord?

Risposta

find_by restituisce direttamente un singolo record o nil, mentre where.first restituisce una relazione ActiveRecord e poi chiama first per ottenere il primo risultato. In pratica, find_by genera una query ottimizzata con LIMIT 1, mentre where potrebbe caricare più dati prima di selezionare il primo elemento.

3

Come passare più condizioni al metodo where in ActiveRecord?

Risposta

Il metodo where accetta un hash con più chiavi per specificare più condizioni che verranno combinate con AND. Ad esempio, User.where(status: 'active', role: 'admin') genera WHERE status = 'active' AND role = 'admin'. Per le condizioni OR, usa or o query SQL grezze.

4

Cos'è il problema N+1 in ActiveRecord?

5

Quale metodo usare per risolvere il problema N+1 precaricando le associazioni?

+25 domande da colloquio

Padroneggia Ruby on Rails per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis