PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

रेल 3.2 - #

अपनी पहली पंक्ति में, आप सफलतापूर्वक एक ActiveRecordRelation . लौटा रहे हैं @alarmsT . में ऑब्जेक्ट करें

# Extracts those alarms that are ACTIVE and have something in common with the tittles
@alarmsT = Alarm.activated.where("keyword in (?)", [@header.title_es, @header.title_en, @header.title_en])

इस बिंदु पर आप अतिरिक्त .where(...) . लागू कर सकते हैं @alarmsT . पर तरीके, शर्तें या दायरा एआरएल एक्सप्रेशन को और बेहतर बनाने के लिए और परिणाम लौटाए गए।

हालांकि, फिर आप @alarmsT . को कनवर्ट करते हुए इस संबंध पर एक फ़िल्टर चलाते हैं सरणी . के उदाहरण के लिए

# Extracts alarms when Header has at least the same categories as an alarm
@alarmsT = @alarmsT.select do |alarm| 
   @header.category_ids.all?{|c| alarm.category_ids.include? c }
end

Array . के बाद से अब आप ARel एक्सप्रेशन नहीं बना सकते हैं आपके ARel के .where(...) . के बारे में नहीं जानता विधि, या आपका कोई अलार्म मॉडल के दायरे या गुण। यही कारण है कि नीचे दिए गए कोड में आपको # के लिए अपरिभाषित विधि 'कहां' मिल रही है त्रुटि -- आप कॉल कर रहे हैं .where() सरणी . के उदाहरण पर; एक विधि जो मौजूद नहीं है।

@alarmsF = [] 
@header.events.each do |e|
  @alarmsF =  @alarmsF + @alarmsT.where("alarms.location LIKE ?", e.town)
end

आप श्रेणी आईडी द्वारा फ़िल्टर करने के लिए चयन न करके और इसके बजाय एक जॉइन का उपयोग करके इसे ठीक कर सकते हैं। इस तरह के जुड़ाव का निर्माण (संबंधित तालिका/स्तंभ में मूल्यों के कम से कम एक सबसेट के अस्तित्व को सत्यापित करने के लिए) Google और यहां StackOverflow पर आसानी से पाए जाने वाले स्थानों पर काफी कुछ प्रलेखित है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL डेटा तुलना उपकरण

  2. jOOQ EXTRACT ([फ़ील्ड] से युग) समाधान?

  3. मुझे libpq स्रोत कहां मिलेगा?

  4. psql:सर्वर से कनेक्ट नहीं हो सका:ऐसी कोई फ़ाइल या निर्देशिका नहीं (Mac OS X)

  5. PostgreSQL C libpq के साथ Bytea बाइनरी डेटा का उपयोग करके फ़ाइलें सहेजें और चुनें