Los raíles siempre generarán una excepción ActiveRecord :: RecordNotFound cuando utilice el método find
. Sin embargo, los métodos find_by_*
devuelven nil
cuando no se encuentra ningún registro.
El ActiveRecord documentation nos dice:
RecordNotFound - Ningún registro respondió al método find. O bien la fila con la ID proporcionada no existe o la fila no cumplió con las restricciones adicionales . Algunas llamadas de búsqueda no plantean esta excepción para indicar que no se encontró nada, consulte la documentación correspondiente al para obtener más información.
Si desea volver nil
cuando los registros no se pueden encontrar, sólo tiene que manejar la excepción de la siguiente manera:
begin
my_record = Record.find params[:id]
rescue ActiveRecord::RecordNotFound => e
my_record = nil
end
¿Cómo lo está cargando para obtener este error? – tadman
Publica tu código de controlador. – James
Estoy pensando algo así como 'si xx_id.nil? "" 'sintaxis que dejaría el campo predeterminado en blanco si el registro es' nil' pero no está seguro si eso cubriría el caso de No Encontrado. – ScottJShea