Rails单表继承:如何覆盖写入类型字段的值

dav*_*rac 6 ruby ruby-on-rails single-table-inheritance ruby-on-rails-3 ruby-on-rails-3.2

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

现在我想SpecialDog继承狗,只是为了在某些特殊情况下略微修改行为.数据仍然相同.我需要运行的所有查询SpecialDog来返回数据库中具有该类型的值Dog.

我的问题是,因为我有一个type列,rails附加WHERE "animals"."type" IN ('SpecialDog')到我的查询,所以我无法访问原始Dog条目.所以我想要的是以某种方式覆盖rails在访问数据库时使用的值SpecialDog,就像表现一样Dog.

有没有办法覆盖类型列使用的rails值?

Fra*_*ans 10

以这种方式做这种感觉就像是不好的做法,但是下面的代码应该尽我所能.

def self.sti_name
  "Dog"
end
Run Code Online (Sandbox Code Playgroud)

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