2011-09-14 6 views
6

In caso contrario, i metodi find_by_ restituiscono un array vuoto anziché zero?I metodi find_by_ di Rails non dovrebbero restituire una matrice vuota invece di zero?

È normale che non ci siano record che corrispondono alla condizione find_by, ma restituire nil non ha senso. Perché allora nei miei Visto errori vengono generati dal codice sensibile come:

<% for thing in @thing_that_might_be_an_array_or_might_be_nil do %> 

Dal find_by_ restituisce sempre una matrice, anche se c'è solo 1 documento, si deve anche restituire un array se ci sono 0 record. Quindi tutti coloro

<% @thing.each 

e

<% for thing in @thing 

nei nostri punti di vista saranno tranquillamente ottenere passato sopra invece di provocare un "Siamo spiacenti, ma qualcosa è andato storto." (o cosa mi manca? Qual è la migliore prassi corrente per gestire questo?)

+0

E in Rails 4, tutto questo è discutibile. – Arcolye

risposta

6

find_by_ viene utilizzato per trovare un record, il primo che corrisponde alle condizioni.

find_all_by_ viene utilizzato per trovare un set di record, un array, che corrisponde alle condizioni.

Quindi, sì, penso che sia del tutto normale per find_by_ restituire nil, e non un array vuoto, quando non trova nulla, perché stai solo chiedendo una cosa.

+0

find_all_by_ ... – Arcolye

Problemi correlati