繁体   English   中英

在Rails中通过关联模型的子类进行查询

[英]Query by an associated model's subclass in rails

我已经使用单表继承(STI)来创建一些模型,这些模型具有从公共父级继承来的子类。 单独的模型与超类具有关联。 例如:如下...

class Fruit < ActiveRecord::Base
  has_many :smoothies
end

class Apple < Fruit
end

class Banana < Fruit
end

class Smoothie < ActiveRecord::Base
  belongs_to :fruit
end

有什么方法可以查询某个子类,而无需为每个子类手动创建方法?

如果my_smoothieApple关联,我希望能够执行类似于my_smoothie.apple来获取Apple实例。

更新资料

我的用例实际上是我有一个冰沙关系,并且我想做some_smoothies.apples以获得包含任何关联的Apple的关系。

如果执行my_smoothie.fruit,则应取回Apple对象(而不是Fruit对象,Rails魔术)。 您可能会很好。

你能做到吗?

my_smoothie.fruit.where(type: "Apple")

当然,如果您需要动态推断子类的名称,则可以使用

subclass_object.class.to_s # if you have an instantiated object e.g. of 'apple'
subclass.to_s # if you start form the subclass e.g. of Apple

如果可以,请考虑为其创建命名范围

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM