【问题标题】:ActiveRecord Multi Level Single Table Inheritance QueryActiveRecord 多级单表继承查询
【发布时间】:2014-03-19 17:24:03
【问题描述】:

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

class Animal < ActiveRecord::Base; end

class Dog < Animal; end

class Mutt < Dog; end

class PureBred < Dog; end

我希望能够查询所有的狗

dogs = Dog.all

and dogs 是 Mutt 和 PureBred 实例的列表。

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

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

但 ActiveRecord 仍然附加了 WHERE type IN ('Dog') 的限制性更强的条件

【问题讨论】:

    标签: ruby-on-rails ruby inheritance activerecord


    【解决方案1】:

    没有;您遇到了 Rails 实施 STI 的技术限制。

    您必须查询基类:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2012-10-13
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多