2011-02-10 14 views
9

मैं उन सभी रिकॉर्ड्स को खोजने की कोशिश कर रहा हूं जहां दो स्थितियां सत्य हैं। उदाहरण के लिए:सभी रिकॉर्ड खोजें जहां दो स्थितियां सत्य हैं

ruby-1.8.7-p302 > Person.all 
=> #<Person name: "Jane", city: "Green Bay", state: "Wisconsin", single: true> 
=> #<Person name: "Dick", city: "Madison", state: "Wisconsin", single: false> 
=> #<Person name: "Tom", city: "Milwaukee", state: "Wisconsin", single: true> 

मैं "जेन" और "टॉम" रिकॉर्ड प्राप्त करना चाहता हूं। मैं इस कोशिश कर रहा हूँ, लेकिन यह काम नहीं करता है:

Person.find_all_by_state("Wisconsin").find_all_by_single(true) 

उत्तर

37

Person.where(:state => "Wisconsin", :single => true)

+2

रिकॉर्ड के लिए, नए रूबी में, आप 'कर सकते हैं राज्य:" विस्कॉन्सिन ", एकल चांबियाँ। –

9

मैं dmarkow के जवाब के साथ जाना होगा, लेकिन अतिरिक्त सामान्य ज्ञान का एक छोटा सा के रूप में आप भी ऐसा कर सकते हैं:

Person.find_all_by_state_and_single("Wisconsin", true) 

वांछित के रूप में _and_ का उपयोग कर कई क्षेत्रों के चेन। हालांकि where वाक्यविन्यास इस से काफी साफ है।

+0

यह बहुत साफ है लेकिन यह वास्तव में मेरे लिए काम करता है। मैं भाग्यशाली मणि का उपयोग कर रहा हूं और यह क्लॉज का उपयोग करके अपेक्षित आउटपुट नहीं दे रहा है। – sybind

+1

उपयोगकर्ता 368937: यह पुराना वाक्यविन्यास है जो रेल 2 में मानक था। डामार्को रेल 3 के लिए है। –

2

उदाहरण एक या शर्त का उपयोग:, TRUE` क्योंकि वे प्रतीक के साथ उन लोगों के लिए हैश शाब्दिक वाक्य विन्यास बदल:

model_name.where("field_1 = ? OR field_2 = ?", params[:search_string], params[:search_string]) 
संबंधित मुद्दे