2012-04-26 18 views
66

में मैं एक मॉडल संशोधित का चयन करें तो यह इस तरह के रूप में एक नया क्षेत्र है, शामिल हैं ...शून्य या खाली जहां नहीं mongoid

field :url, :type => String

मैं activeadmin उपयोग करते हैं, तो जब मैं एक नई प्रविष्टि बनाने के @model.url रिक्त है , और स्कीमा को बदलने से पहले बनाई गई प्रविष्टियों में यह शून्य है। मैं दोनों का चयन कैसे करूं? मैंने कोशिश की है:

# Returns nils and strings 
Model.where(:url.ne => "").count 

# Returns strings and "" 
Model.where(:url.ne => nil).count 

# Returns strings, nils and "" 
Model.where(:url.ne => ["", nil]).count 

या, परिदृश्य के इस प्रकार तो कृपया मुझे बताएं का सर्वोत्तम तरीका है या नहीं।

उत्तर

64

देखने का प्रयास करें

Model.where(:url.nin => ["", nil]).count 

यह काम करता है, तब भी जब url = nil

+2

इसे स्वीकार किया जाना चाहिए, यह 'url == nil' के साथ भी काम करता है। –

+0

मैं सहमत हूं, यह वास्तविक जवाब है और इस प्रश्न का स्वीकार्य उत्तर होना चाहिए। – quinn

+0

यदि आप केवल उन प्रविष्टियों की जांच करना चाहते हैं जहां कोई फ़ील्ड शून्य नहीं है: 'Model.where (: field.ne => nil) ' – Ekkstein

86

प्रयास करें

Model.where(:url.ne => "", :url.exists => true).count 

Mongoid Symbol Operators

+0

निर्माण! बहुत बहुत धन्यवाद। – Duopixel

+5

काम नहीं करता है अगर 'url' 'nil' है। –

संबंधित मुद्दे