आपका कोड काम क्यों नहीं करता है?
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 business = Business.where(:user_id => current_user.id).first
business.do_some_stuff
else
end
इस विकल्प को कुछ लिंटर्स (उदाहरण के लिए रूबोकॉप) द्वारा एक कोड गंध माना जा सकता है।
विकल्प 3 बी: चर असाइनमेंट
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