2010-08-29 17 views
21

मैं वर्तमान में दो सक्रिय रिकॉर्ड प्रश्नों है कि मैं एक साथ गठबंधन करने के लिए चाहते हैंकम्बाइन दो ActiveRecord क्वेरी परिणाम

 
joins("join relationships ON user_id = followed_id"). 
       where("follower_id = #{user.id}") 

और

 
where(:user_id => user.id) 

मूल रूप से मैं के साथ प्रकट करने के लिए एक दूसरे के परिणाम चाहते हैं पहले SQL में UNION कथन के समान। क्या यह ActiveRecord में इस तरह से किया जा सकता है?

मैं एक संघ का उपयोग करना पसंद करूंगा, जिसके बजाय एक स्ट्रिंग में सभी followed_id एस में शामिल होना होगा और एसक्यूएल में IN खंड का उपयोग करना होगा।

कोई भी विचार?

----- संपादित ------ मैं एक तरह से इस आलसी लोड हो रहा है के साथ काम करने के लिए

उत्तर

12

उपयोग relation & relation रहा हूँ: यह मेरे लिए उपयोगी था

Model.joins("join relationships ON user_id = followed_id").where("follower_id = {user.id}") & Model.where(:user_id => user.id) 
+6

यह सक्रिय रिकॉर्ड्स को परिणामों को उत्सुकता से एक सरणी में रखने के लिए मजबूर करता है। क्या यह आलसी लोडिंग के साथ किया जा सकता है? – zzawaideh

+0

बीटीडब्ल्यू .. मैंने आपके जवाब को वोट दिया क्योंकि यह मुझे रास्ते का हिस्सा मिला। – zzawaideh

+0

यह संबंध नहीं होना चाहिए | रिश्ता? ActiveRecord :: एक सरणी जैसे संबंध quacks और [1] और [2] == [] लेकिन [1] | [2] = [1,2]। – mtjhax

28

:

Model.where(...) | Model.where(...) 
+0

आपने मुझे यहां बचाया। धन्यवाद दोस्त – Abram

+3

दरअसल, यह अपेक्षित के रूप में काम नहीं कर रहा है। – Abram

+15

यह ActiveRecord_Relation को ऐरे ऑब्जेक्ट में परिवर्तित करता है। आप परिणामी वस्तुओं पर .where आदि जैसे सक्रिय रिकॉर्ड विधियों को लागू नहीं कर सकते हैं – CodeExpress

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