मैं की तरह एक मॉडल सेटअप मिल गया है निम्नलिखित:Default_scope
user.words
:
class User
has_many :items
has_many :words, :through => :items
end
class Item
belongs_to :user
belongs_to :word
default_scope where(:active => true)
end
class Words
has_many :items
end
समस्या मैं आ रही हैं कि default_scope निम्न संबद्धता के लिए लागू नहीं किया जा रहा है
SELECT `words`.* FROM `words` INNER JOIN `items` ON `words`.id = `items`.word_id WHERE ((`items`.user_id = 1)) AND ((`items.active = 1))
मैं लॉग में यह एसक्यूएल मिलती है:: इस एसक्यूएल के बजाय
SELECT `words`.* FROM `words` INNER JOIN `items` ON `words`.id = `items`.word_id WHERE ((`items`.user_id = 1))
मुझे ऐसा लगता है क्योंकि डिफ़ॉल्ट क्षेत्र नियमित मॉडल और उसके बाल संघ के लिए काम करता है, लेकिन तालिका में शामिल होने के लिए नहीं।
एसोसिएशन के बीच काम करने के लिए जॉइन टेबल स्कोप प्राप्त करने के लिए सही रेल तरीका क्या है इसे निर्दिष्ट किए बिना? क्या कोई अस्तित्व में है?
मैं सहमत हूं। लगता है कि एक एसोसिएशन कहलाता है जब शामिल मॉडल लोड किया जाना चाहिए। मुझे लगता है कि यह अनुकूलन के लिए नहीं है। हालांकि, मुझे लगता है कि उपयोगकर्ता मॉडल में has_many विधि को बस बंद करने के बजाय, उस मॉडल को शामिल करने के लिए शामिल मॉडल सही जगह है। – joeellis