Kodunuz neden çalışmıyor?
whereBir yöntem, döner ActiveRecord :: ilişki nesnesi (sonuçlarını içeren bir dizi gibi davranan where), boş olabilir ama aslanil .
Business.where(id: -1)
Business.where(id: -1).nil?
Business.where(id: -1).empty?
En az bir kayıt olup olmadığı nasıl test edilir?
Seçenek 1: Kullanma.exists?
if Business.exists?(user_id: current_user.id)
else
end
2. Seçenek: Kullanmak .present?(veya .blank?tersi .present?)
if Business.where(:user_id => current_user.id).present?
else
end
Seçenek 3: if ifadesindeki değişken atama
if business = Business.where(:user_id => current_user.id).first
business.do_some_stuff
else
end
Bu seçenek bazı linterler tarafından bir kod kokusu olarak düşünülebilir (örneğin Rubocop).
Seçenek 3b: Değişken atama
business = Business.where(user_id: current_user.id).first
if business
else
end
Bunun .find_by_user_id(current_user.id)yerine de kullanabilirsiniz.where(...).first
En iyi seçenek:
BusinessNesneleri kullanmıyorsanız : 1. Seçenek
BusinessNesneleri kullanmanız gerekirse : 3. Seçenek
whereyoksa boş bir dizi döndürür. Ve[]eşit değilnil