1

我有 - 我认为 - 是一个简单的问题。这是我的代码:

class Fruit < ActiveRecord::Base
end

class Apple < Fruit
end

class Kiwi < Fruit
end

假设我正确设置了所有 STI,并且表中有多种类型的 Apple 和 Kiwi 记录。从这里...

fruits = Fruit.find(:all)

...我如何从 fruits 数组中返回一组只是 Apples 的数组?

4

1 回答 1

2

如果它们只是普通对象,你会这样做:

fruits.select {|fruit| fruit.is_a?(Apple) }

STI 使用该type字段来跟踪子模型,因此您也可以这样做

fruits.select {|fruit| fruit.type == "Apple" }

如果您只想从数据库中获取苹果,只需执行

Apple.find(:all)
于 2010-04-12T21:58:50.150 回答