Mengapa kode Anda tidak berfungsi?
The wherekembali metode sebuah ActiveRecord :: Relation objek (bertindak seperti sebuah array yang berisi hasil where), itu bisa kosong tapi itu tidak akan pernahnil .
Business.where(id: -1)
Business.where(id: -1).nil?
Business.where(id: -1).empty?
Bagaimana cara menguji jika setidaknya ada satu catatan?
Opsi 1: Menggunakan.exists?
if Business.exists?(user_id: current_user.id)
else
end
Opsi 2: Menggunakan .present?(atau .blank?, kebalikan dari .present?)
if Business.where(:user_id => current_user.id).present?
else
end
Opsi 3: Penugasan variabel dalam pernyataan if
if business = Business.where(:user_id => current_user.id).first
business.do_some_stuff
else
end
Opsi ini dapat dianggap sebagai code bau oleh beberapa linter (misalnya Rubocop).
Opsi 3b: Penugasan variabel
business = Business.where(user_id: current_user.id).first
if business
else
end
Anda juga dapat menggunakan .find_by_user_id(current_user.id)bukannya.where(...).first
Pilihan terbaik:
- Jika Anda tidak menggunakan
Businessobjek: Opsi 1
- Jika Anda perlu menggunakan
Businessobjek: Opsi 3
whereakan mengembalikan larik kosong jika tidak ada catatan. Dan[]tidak samanil