[英]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_smoothie
与Apple
关联,我希望能够执行类似于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.