Как вернуть детям предметы? - PullRequest
1 голос
/ 13 апреля 2010

У меня есть - что я думаю - простой вопрос. Вот мой код:

class Fruit < ActiveRecord::Base
end

class Apple < Fruit
end

class Kiwi < Fruit
end

Предположим, что у меня все настройки STI правильно, и в таблице есть несколько типов записей Apple и Kiwi. Отсюда ...

fruits = Fruit.find(:all)

... как мне вернуть массив просто яблок из массива фруктов?

1 Ответ

2 голосов
/ 13 апреля 2010

Точно так же, как если бы это были обычные объекты:

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

STI использует поле type для отслеживания подмодели, поэтому вы также можете сделать

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

Если вы хотите получить только яблоки из базы данных, просто наберите

Apple.find(:all)
...