5

在我的系統我有STI已經定義的值。從AnimalDog繼承,在animals表有一個type列與價值"Dog"Rails的單表繼承:如何覆蓋寫入類型字段

現在我想有從狗SpecialDog繼承,只是在一些特殊情況下,稍微修改行爲。數據仍然相同。我需要通過SpecialDog運行的所有查詢返回數據庫中的值爲Dog的值。

我的問題是,因爲我有一個type列,導軌追加WHERE "animals"."type" IN ('SpecialDog')到我的查詢,所以我不能到原來的Dog條目。因此,我想要的是以某種方式覆蓋值欄通過使用SpecialDog訪問數據庫時的值,以表現得像Dog

有沒有辦法覆蓋軌使用的類型列的值?

+0

你保存任何狗作爲SpecialDog?或者都是狗狗,但它們有時特別? – Frans

+0

在數據庫中,他們總是'狗' – davidrac

回答

8

它那種感覺就像是不好的做法,做這種方式,但下面的代碼應儘可能我可以告訴工作。

def self.sti_name 
    "Dog" 
end 

我的另一個建議是,沒有從DogSpecialDog繼承,如果可能的話。

+0

不工作了嗎??? 我有同樣的情況,ruby 2.0.0,rails 3.0.10,使用它沒有成功。 –