¿Por qué tu código no funciona?
El where
método devuelve un objeto ActiveRecord :: Relation (actúa como una matriz que contiene los resultados del where
), puede estar vacío pero nunca lo estaránil
.
Business.where(id: -1)
Business.where(id: -1).nil?
Business.where(id: -1).empty?
¿Cómo probar si existe al menos un registro?
Opción 1: usar.exists?
if Business.exists?(user_id: current_user.id)
else
end
Opción 2: Usar .present?
(o .blank?
lo contrario de .present?
)
if Business.where(:user_id => current_user.id).present?
else
end
Opción 3: Asignación de variable en la instrucción if
if business = Business.where(:user_id => current_user.id).first
business.do_some_stuff
else
end
Esta opción puede ser considerada un olor a código por algunos linters (Rubocop por ejemplo).
Opción 3b: asignación de variable
business = Business.where(user_id: current_user.id).first
if business
else
end
También puede usar en .find_by_user_id(current_user.id)
lugar de.where(...).first
Mejor opción:
- Si no usa el
Business
(los) objeto (s): Opción 1
- Si necesita usar el
Business
objeto (s): Opción 3
where
devolverá una matriz vacía si no hay registros. Y[]
no es igualnil