Kodunuz neden çalışmıyor?
where
Bir 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:
Business
Nesneleri kullanmıyorsanız : 1. Seçenek
Business
Nesneleri kullanmanız gerekirse : 3. Seçenek
where
yoksa boş bir dizi döndürür. Ve[]
eşit değilnil