6

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

现在我想SpecialDog从狗继承,只是为了在某些特殊情况下稍微修改行为。数据还是一样的。我需要运行的所有查询SpecialDog来返回数据库中具有 type 的值Dog

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

有没有办法覆盖用于类型列的值轨道?

4

1 回答 1

11

这样做感觉有点不好,但据我所知,下面的代码应该可以工作。

def self.sti_name
  "Dog"
end

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

于 2013-04-04T10:39:39.597 回答