ActiveRecord多级单表继承查询

时间:2014-03-19 17:24:03

标签: ruby-on-rails ruby inheritance activerecord

我正在尝试使用单表继承从不是单表继承的基类的类中查询类层次结构中的所有记录。例如,给定以下类heirarchy。

class Animal < ActiveRecord::Base; end

class Dog < Animal; end

class Mutt < Dog; end

class PureBred < Dog; end

我希望能够查询所有的狗

dogs = Dog.all

和狗是Mutt和PureBred的实例列表。

可以这样做吗?我通过将Dog类中的default_scope设置为

来尝试概念验证
default_scope { where(:type => ['Mutt', 'PureBred']) }

但ActiveRecord仍在追加WHERE类型IN('Dog')的限制性更强的条件

1 个答案:

答案 0 :(得分:4)

没有;你遇到了Rails技术限制的问题&#39;实施STI。

您必须查询基类:

Animal.where(type: %w(Dog Mutt PureBred))