Чому ваш код не працює?
У whereметоді повертає ActiveRecord :: Ставлення об'єкт (діє як масив , який містить результати цього where), він може бути порожнім , але він ніколи не будеnil .
Business.where(id: -1)
Business.where(id: -1).nil?
Business.where(id: -1).empty?
Як перевірити, чи існує хоча б один запис?
Варіант 1: Використання.exists?
if Business.exists?(user_id: current_user.id)
else
end
Варіант 2: Використання .present?(або .blank?протилежне .present?)
if Business.where(:user_id => current_user.id).present?
else
end
Варіант 3: Призначення змінної в операторі if
if business = Business.where(:user_id => current_user.id).first
business.do_some_stuff
else
end
Цей варіант можна вважати запахом коду деякими лінтерами (наприклад, Rubocop).
Варіант 3b: Призначення змінних
business = Business.where(user_id: current_user.id).first
if business
else
end
Ви також можете використовувати .find_by_user_id(current_user.id)замість.where(...).first
Найкращий варіант:
- Якщо ви не використовуєте
Businessоб'єкт (и): Варіант 1
- Якщо вам потрібно використовувати
Businessоб’єкт (и): Варіант 3
whereповерне порожній масив, якщо немає записів. І[]не рівнеnil