2010-09-29 17 views
9

मैं इस प्रकार दो चर को परिभाषित करने के कोशिश कर रहा हूँ:गैर-शून्य फ़ील्ड वाले सभी रिकॉर्ड खोजें?

  1. @orders = Customer.find_all_by_order_date (शून्य)
  2. @nonorders = Customer.find_all_by_order_date (! शून्य)

पहले काम करता है ठीक से लेकिन दूसरा नहीं है। मैं उन ग्राहकों को कैसे ढूंढ सकता हूं जिनके order_date फ़ील्ड शून्य नहीं हैं?


@nonorders = @ customer.orders.find (: सभी,: स्थिति => "@ customer.orders.order_date शून्य नहीं है"):

मुझे निम्न त्रुटि दे रहा है

अपरिभाषित विधि `extract_options_from_args! ' ActiveRecord :: बेस के लिए: कक्षा

मैंने @ order.order_date, @ customer.order.order_date, आदि जैसी स्थितियों को बदलने का प्रयास किया है। यह त्रुटि क्या है? धन्यवाद!

+0

रेल में, मॉडल के लिए आम तौर पर वर्ग के नाम पहला पत्र अपर केस, एकवचन हो रहा है। और डेटाबेस तालिका का नाम आमतौर पर लोअरकेस, बहुवचन है। तो यह ग्राहक होना चाहिए। ढूँढें (: सभी,: शर्तें => "customers.date पूर्ण नहीं है") आपको इस समस्या की जांच करनी चाहिए। सामान्य एकवचन (ग्राहक के बजाय ग्राहक) के बजाय एक बहुवचन मॉडल नाम आपके स्वयं के निर्माण के रूप में बहुत भ्रम पैदा कर सकता है। –

+0

बहुवचन ग्राहक दुर्भाग्य से एक टाइपो था - मैं अपने सिस्टम में ग्राहक का उपयोग करता हूं। धन्यवाद लैरी! – sscirrus

उत्तर

21

Rails3:

@nonorders = Customers.where("customers.date IS NOT NULL") 

Rails2:

@nonorders = Customers.find(:all, :conditions => "customers.date IS NOT NULL") 
+0

हाय यानीस, मैंने एक फॉलो-अप प्रश्न अपलोड किया है ... दुर्भाग्यवश त्रुटियों को अभी भी प्राप्त हो रहा है। – sscirrus

+1

या @nonorders = customer.find (: all,: include =>: ऑर्डर,: शर्तें => ["order.order_date पूर्ण नहीं है और customers.id =?", @ Customer.id]) – Bohdan

1

स्ट्रिंग आप के रूप में पारित: स्थिति एक एसक्यूएल टुकड़ा की जरूरत है।

"customers.date" दिए गए उदाहरण में ग्राहकों की तालिका के दिनांक फ़ील्ड को संदर्भित किया गया है। मुझे लगता है कि "ग्राहक" बिट कड़ाई से जरूरी नहीं है, क्योंकि तालिका का नाम संदर्भ से स्पष्ट है।

अपने उदाहरण में निम्नलिखित काम करना चाहिए:

@nonorders = @customer.orders.find(:all, :conditions => "order_date IS NOT NULL") 
संबंधित मुद्दे