2011-08-30 18 views
10

रेल 3.1 RC6 पर, दियाActiveRecord एसटीआई: मैं कैसे माता पिता कक्षा से बाहर तोड़ सकते हैं 'डिफ़ॉल्ट गुंजाइश

class Animal < ActiveRecord::Base 
    default_scope where(legs: 4) 
end 

निम्नलिखित अपेक्षा के अनुरूप काम नहीं करता है:

class Man < Animal 
    default_scope unscoped.where(legs: 2) 
end 

जिसके परिणामस्वरूप SQL विवरण ऐसा लगता है:

SELECT * FROM animals WHERE legs = 4 AND legs = 2 

मैं मूल वर्ग के डिफ़ॉल्ट दायरे को पूरी तरह से ओवरराइड कैसे कर सकता हूं?

default_scope{ unscoped.where legs: 2 } 
default_scope with_exclusive_scope{ legs: 2 } 

उत्तर

8

मैं रेल के स्रोत कोड में खोदे गए और एक समाधान है कि रेल 3.1 के तहत काम करता के साथ आया था (ActiveRecord 3.1.0.rc6 के साथ परीक्षण किया:

मैं भी की जो काम निम्नलिखित में से कोई भी कोशिश की है):

class Animal < ActiveRecord::Base 
    default_scope where(legs: 4) 
end 

class Man < Animal 
    self.default_scopes = [] 
    default_scope where(legs: 2) 
end 
+0

मदद की लगता है कि इस रेल 3.0 में काम करता है: self.default_scoping = [] – jemminger