如何返回子对象?
问题描述:
我有 - 我的想法 - 是一个简单的问题。这里是我的代码:如何返回子对象?
class Fruit < ActiveRecord::Base
end
class Apple < Fruit
end
class Kiwi < Fruit
end
假设我正确拥有所有的STI设置,并有多种类型的表中的苹果和猕猴桃的记录。从这里...
fruits = Fruit.find(:all)
...我如何返回水果数组中的苹果数组?
答
你会怎么做,如果他们只是普通的对象,用同样的方法:
fruits.select {|fruit| fruit.is_a?(Apple) }
STI使用type
领域保持子模型的轨道,所以你也可以做
fruits.select {|fruit| fruit.type == "Apple" }
如果你只想从数据库中得到苹果,只要做
Apple.find(:all)