2012-09-28 11 views
5

मैं दो टेबल, Parent और Child और उन दोनों को है कहो एक क्षेत्र name कहा जाता है, अगर मैं ऐसा है:रेल: समूह पर अस्पष्टता को सुलझाने का उपयोग कर प्रतीकों

Parent.join(:child).group(:name)

मैं बताते हुए एक त्रुटि प्राप्त होगी कि क्षेत्र name में एक अस्पष्टता है। मैं कर सकता निम्नलिखित

Parent.join(:child).group('parents.name')

इसे हल करने के लिए, लेकिन मुझे लगता है कि यदि संभव हो तो एक प्रतीक का उपयोग करना पसंद करते हैं। तो यह है?

उत्तर

1

आप स्वचालित रूप से तालिका नाम उपसर्ग जोड़ने के लिए

class Parent < ActiveRecord::Base 
    class << self; alias_method :old_group, :group; end 
    scope :group, lambda { |g| 
    old_group("#{table_name}.#{g}") 
    } 
end 

Parent.join(:child).group(:name) 
+2

आप ActiveRecord से बाहर और अधिक चाहते हैं, तो आप squeel मणि https://github.com/ernie/squeel की जाँच करनी चाहिए – jdoe

+0

आप थे गुंजाइश को फिर से परिभाषित कर सकते हैं ठीक है, 'समूह (: माता-पिता =>: नाम)' जादू रेल द्वारा प्रदान नहीं किया गया था, लेकिन स्क्वायर मणि द्वारा। गलतफहमी के लिए खेद है। – jdoe

+0

धन्यवाद, लेकिन यह मेरी समस्या को बिल्कुल हल नहीं करता है, क्योंकि यह मुझे उदाहरण के लिए "childs.name" निर्दिष्ट करने की अनुमति नहीं देता है। मैं उस स्क्वाइल मणि में एक नज़र डालेंगे :) –

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