¿Por qué tu código no funciona?
El wheremé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
Businessobjeto (s): Opción 3
wheredevolverá una matriz vacía si no hay registros. Y[]no es igualnil