1

J'ai - ce que je pense - une question simple. Voici mon code:Comment retourner des objets enfants?

class Fruit < ActiveRecord::Base 
end 

class Apple < Fruit 
end 

class Kiwi < Fruit 
end 

Supposons que j'ai toute la configuration STI correctement, et il y a plusieurs types de disques Apple et Kiwi dans la table. De là ...

fruits = Fruit.find(:all) 

... comment retourner un tableau de seulement des pommes du tableau de fruits?

Répondre

2

De la même façon que vous le feriez si elles étaient simplement des objets normaux:

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

STI utilise le champ type pour garder une trace du sous-modèle, vous pouvez également faire

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

Si vous voulez obtenir que les pommes de la base de données, il suffit de faire

Apple.find(:all) 
Questions connexes