2010-05-25 14 views
6

क्या find_by_sql के अलावा ActiveRecord के साथ EXISTS का उपयोग करने का कोई तरीका है?ActiveRecord जहां नहीं है

मुझे एक-से-कई संबंधों में किसी भी संगठन के बिना सभी रिकॉर्ड खोजने का एक अच्छा तरीका चाहिए।

SELECT DISTINCT store_type FROM stores 
    WHERE NOT EXISTS (SELECT * FROM cities_stores 
        WHERE cities_stores.store_type = stores.store_type) 

उत्तर

5
Store.all(:select => "DISTINCT store_type", 
      :conditions => "NOT EXISTS (SELECT * FROM cities_stores WHERE cities_stores.store_type = stores.store_type)") 

ActiveRecord क्या आपके द्वारा ऊपर डाला रूप में एक ही क्वेरी को निष्पादित करेंगे। लौटाए गए स्टोर उदाहरणों में एक एकल store_type विशेषता होगी।

+7

कच्चे एसक्यूएल के बजाय मानक ActiveRecord विधियों का उपयोग करके आंतरिक क्वेरी लिखने का कोई तरीका था, तो यह अच्छा होगा। क्या यह संभव है? –

+0

@AndrewCone क्या आपने 'join' का उपयोग करने का प्रयास किया था? आधिकारिक दस्तावेज देखें http://guides.rubyonrails.org/active_record_querying.html#using-array-hash-of-named-associations – zhongxiao37

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