Ruby on rails Rails单表继承:如何重写写入类型字段的值

Ruby on rails Rails单表继承:如何重写写入类型字段的值,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.2,single-table-inheritance,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,Single Table Inheritance,在我的系统中,我已经定义了STIDog继承自Animal,在animals表中有一个type列,其值为“Dog” 现在我想让SpecialDog从dog继承,只是在一些特殊情况下稍微修改行为。数据仍然是一样的。我需要通过SpecialDog运行的所有查询来返回数据库中类型为Dog的值 我的问题是,由于我有一个type列,rails在我的查询中添加了WHERE“animals”,“type”IN('SpecialDog'),因此我无法访问原始的Dog条目。因此,我希望以某种方式覆盖rails通过S

在我的系统中,我已经定义了STI
Dog
继承自
Animal
,在
animals
表中有一个
type
列,其值为
“Dog”

现在我想让
SpecialDog
从dog继承,只是在一些特殊情况下稍微修改行为。数据仍然是一样的。我需要通过
SpecialDog
运行的所有查询来返回数据库中类型为
Dog
的值

我的问题是,由于我有一个
type
列,rails在我的查询中添加了
WHERE“animals”,“type”IN('SpecialDog')
,因此我无法访问原始的
Dog
条目。因此,我希望以某种方式覆盖rails通过
SpecialLog
访问数据库时使用的值,使其行为类似于
Dog


有没有一种方法可以覆盖rails对type列使用的值?

这样做感觉不太好,但是下面的代码就我所知应该可以工作

def self.sti_name
  "Dog"
end

我的另一个建议是,如果可能的话,不要让
SpecialDog
继承
Dog

是否将任何狗保存为SpecialDog?或者所有的狗都是狗,但它们有时很特别?在数据库中它们总是“狗”不再工作???我有同样的例子,ruby 2.0.0,rails 3.0.10,使用它没有成功。