5

पर लिखे गए मान को ओवरराइड कैसे करें मेरे सिस्टम में मेरे पास पहले से ही एसटीआई परिभाषित है। DogAnimal से विरासत animals तालिका में type कॉलम "Dog" के साथ कॉलम है।रेल एकल तालिका विरासत: प्रकार फ़ील्ड

अब मैं SpecialDog कुत्ते से प्राप्त करना चाहता हूं, बस कुछ विशेष मामले में व्यवहार को थोड़ा संशोधित करना चाहता हूं। डेटा अभी भी वही है। Dog टाइप करने वाले डेटाबेस में मान वापस करने के लिए मुझे SpecialDog के माध्यम से चलने वाले सभी प्रश्नों की आवश्यकता है।

मेरे समस्या यह है कि जब से मैं एक type स्तंभ है, रेल मेरी क्वेरी के लिए WHERE "animals"."type" IN ('SpecialDog') संलग्न कर देता है तो मैं मूल Dog प्रविष्टियों के लिए नहीं मिल सकता है। तो मैं चाहता हूं कि Dog जैसे व्यवहार करने के लिए SpecialDog के माध्यम से डेटाबेस तक पहुंचने पर मूल्य रेल का उपयोग किसी भी तरह ओवरराइड करना है।

क्या टाइप कॉलम के लिए मूल्य रेल उपयोग को ओवरराइड करने का कोई तरीका है?

+0

क्या आप किसी भी कुत्ते को स्पेशलडॉग के रूप में सहेज रहे हैं? या सभी कुत्ते कुत्ते हैं, लेकिन वे कभी-कभी विशेष होते हैं? – Frans

+0

डेटाबेस में वे हमेशा 'कुत्ते' – davidrac

उत्तर

8

यह इस तरह से करने के लिए खराब अभ्यास की तरह लगता है, लेकिन नीचे दिए गए कोड को जहां तक ​​मैं बता सकता हूं काम करना चाहिए।

def self.sti_name 
    "Dog" 
end 

मेरे अन्य सुझाव नहीं, Dog से SpecialDog इनहेरिट करने के लिए करता है, तो संभव है।

+0

काम नहीं कर रहे हैं ??? मेरे पास एक ही मामला है, रूबी 2.0.0, रेल 3.0.10, इसका उपयोग करने में कोई सफलता नहीं है। –

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