我使用单表继承(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
与Apple
my_smoothie
的方式执行Apple
个实例。
更新
我的用例实际上是我与Smoothies的关系,我想some_smoothies.apples
来获取包含任何相关苹果的关系。
答案 0 :(得分:0)
如果你做了my_smoothie.fruit,你应该找回一个Apple对象(不是Fruit对象,Rails魔法)。你可能会很好。
答案 1 :(得分:0)
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
如果你没问题,可以考虑为它创建named scopes