Ruby on rails Rails单表继承如何从查询父类中查找子类的记录?

Ruby on rails Rails单表继承如何从查询父类中查找子类的记录?,ruby-on-rails,ruby-on-rails-4,activerecord,single-table-inheritance,Ruby On Rails,Ruby On Rails 4,Activerecord,Single Table Inheritance,我有events表和Event类,它们支持单表继承。 有Events::Template类继承自它。还有更多的3-4个类继承自这个Events::Template类(即3层继承) 当我查询Events::Templateclass时,我需要所有子类的结果记录。所以当我这么做的时候 Events::Template.where(....) 它生成以下查询 SELECT "events".* FROM "events" WHERE "events"."type" IN ('Events::Tem

我有
events
表和
Event
类,它们支持单表继承。 有
Events::Template
类继承自它。还有更多的3-4个类继承自这个
Events::Template
类(即3层继承)

当我查询
Events::Template
class时,我需要所有子类的结果记录。所以当我这么做的时候

Events::Template.where(....)
它生成以下查询

SELECT "events".* FROM "events"  WHERE "events"."type" IN ('Events::Template')...
此默认查询仅将类型筛选为
Events::Template


是否有任何方法可以删除类型的默认查询或将其更改为查找
Events::Template
的所有子类?

据我所知,您需要在表(Events)中添加字段-type:string


您可以使用此字段筛选查询

据我所知,您需要在表中添加字段(事件)-类型:string


您可以使用此字段筛选查询

我不支持你要找的,阿飞。你需要改变你的架构..我不支持你想要的,好吧。你需要改变你的架构…领域就在那里。。。问题是,当我在父类中写入作用域时,它会按照前面提到的
type
过滤结果。那么有没有办法删除/修改这个默认过滤器呢?我刚刚又读了一遍这个问题,我需要一些解释:你的模板类是:template,你有以下子类:Event::template somethinglese::template?也许单数和复数是问题所在?很抱歉没有弄清楚,关系如下:事件=>Events::Template=>(1.事件::模板::创建2.事件::模板::删除3.事件::模板::更新)因此
事件
是最顶级的类
Events::Template
是它的子类,其他三个类是
Events::Template
classI的子类。我不确定在您的情况下为什么要使用STI。我很好奇“创建”、“删除”和“更新”子类背后的逻辑是什么:你确定你要找的东西不能用状态机或服务对象解决吗?无论哪种方式,我都会很快看一看,如果我能在这方面帮助你,有没有。。。问题是,当我在父类中写入作用域时,它会按照前面提到的
type
过滤结果。那么有没有办法删除/修改这个默认过滤器呢?我刚刚又读了一遍这个问题,我需要一些解释:你的模板类是:template,你有以下子类:Event::template somethinglese::template?也许单数和复数是问题所在?很抱歉没有弄清楚,关系如下:事件=>Events::Template=>(1.事件::模板::创建2.事件::模板::删除3.事件::模板::更新)因此
事件
是最顶级的类
Events::Template
是它的子类,其他三个类是
Events::Template
classI的子类。我不确定在您的情况下为什么要使用STI。我很好奇“创建”、“删除”和“更新”子类背后的逻辑是什么:你确定你要找的东西不能用状态机或服务对象解决吗?不管怎样,如果我能帮你的话,我会很快看一看