Mengapa kode Anda tidak berfungsi?
The where
kembali 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
Business
objek: Opsi 1
- Jika Anda perlu menggunakan
Business
objek: Opsi 3
where
akan mengembalikan larik kosong jika tidak ada catatan. Dan[]
tidak samanil