je le scénario suivant et je ne suis pas sûr si je dois utiliser l'héritage de table héritage de classe ou simple:Héritage de classe ou d'héritage de table simple dans Rails 2.3
Class User
has_one :main_list
has_one :known_list
has_many :regular_lists
end
Class List
has_many :words
end
Class Word
belongs_to :list
end
Ce que je voudrais faire est d'avoir chaque type de liste différente être une classe différente, le problème est que si je fais cela, je devrais ajouter main_list_id
, known_list_id
, et regular_list_id
à l'objet/classe Word
. Cela semble lourd. Puis-je faire quelque chose comme:
Class MainList
has_many :words, :foreign_key => list_id
end
puis quelque chose comme:
@user.main_list.find_by_name("MainList")
?
Le seul problème avec ceci est que quelqu'un pourrait nommer un RegularList
"MainList".
Idée intéressante, mais qu'en faire @ user.regular_lists maintenant? Cela ne va-t-il pas retourner toutes les listes, y compris les listes main_list et known_list? Un index sur ces champs booléens serait-il approprié? – TenJack
Pour les trouver, ce serait @ user.lists.find (: first,: conditions => {: main_list => false,: liste_connue => false}). Vous pouvez également simplifier cela en créant des étendues nommées. Et non, ce ne serait pas une bonne idée d'indexer les champs booléens ... il suffit d'indexer l'id_utilisateur. –
Modifier pour ci-dessus: la requête doit être @ user.lists.find (: all,: conditions => {: main_list => false,: known_list => false}) car il existe plusieurs listes régulières ... Désolé à ce sujet. –