2011-09-14 8 views
6

¿No deberían los rails find_by_ methods devolver una matriz vacía en lugar de nil?¿No deberían los rails find_by_ methods devolver una matriz vacía en lugar de nil?

Es normal que no haya registros que coincidan con la condición find_by_, pero devolver nil no tiene sentido. Porque entonces en mis visitas errores son levantados por código sensibles como:

<% for thing in @thing_that_might_be_an_array_or_might_be_nil do %> 

Desde find_by_ siempre devuelve una matriz, incluso si sólo hay 1 registro, sino que también debe devolver una matriz si hay 0 registros. A continuación, todos los

<% @thing.each 

y

<% for thing in @thing 

en nuestros puntos de vista se van pasando en silencio sobre su lugar de causar una "Lo sentimos, ha ocurrido un error." (o ¿qué me estoy perdiendo? ¿Cuál es la mejor práctica actual de tratar con esto?)

+0

Y en Rails 4, todo esto es discutible. – Arcolye

Respuesta

6

find_by_ se utiliza para encontrar un registro, el primero que coincida con sus condiciones.

find_all_by_ se utiliza para buscar un conjunto de registros, una matriz, que coincidan con sus condiciones.

Entonces, sí, creo que es totalmente normal que find_by_ devuelva nil, y no una matriz vacía, cuando no encuentra nada, porque solo está pidiendo una cosa.

+0

find_all_by_ ... – Arcolye

Cuestiones relacionadas