2011-10-03 16 views
6

मैं कहाँ विधिरेल 3 नहीं

MyModel.where(:some_id => !nil) 

लेकिन यह काम नहीं करता है का उपयोग करते हुए सभी रिकॉर्ड है कि मेरी मेज से अशक्त नहीं हैं का चयन करने के कोशिश कर रहा हूँ नहीं के बराबर है, वहाँ यह करने के लिए किसी अन्य समाधान है?

उत्तर

7

एक हैश के बजाय एक स्ट्रिंग का उपयोग करें

MyModel.where("some_id is not null") 
1

आप उपयोग कर सकते हैं:

MyModel.where("some_id IS NOT NULL") 
12

आप इसे Arel सिंटैक्स का उपयोग (जो डेटाबेस स्वतंत्र होने का बोनस है) कर सकते हैं:

MyModel.where(MyModel.arel_table['some_id'].not_eq(nil)) 
+0

अच्छा ... मुझे लगता है कि रेल डेवलपर्स के बीच अभी भी थोड़ा सा अंडर है – lucapette

+0

@ लुकपेट मैं सहमत हूं, हालांकि अर्ध-अप्रत्यक्ष दस्तावेज उस के लिए दोषी ठहरा सकता है ... –

+0

@BenoitGarret धन्यवाद, आपने दिन बचाया! मेरे पास sqlite3 के तहत काम करने वाली एक फ़िल्टर क्वेरी थी, लेकिन पोस्टग्रेज़ पर टूट गई। मुझे एरल नहीं पता था। संकेत के लिए धन्यवाद। मैं इस पर ध्यान दूँगा। – Guillaume