Rails: belongs_to vs has_one
Un peu un newbie question sur les rails d'associations.
J'ai un Bug de modèle, et un Statut de modèle. L'état est fondamentalement juste une paire clé/valeur de la table. De ces choix, je dirais Bug has_one Statut qui fait le plus de sens. Toutefois, selon cette
Contenu belongs_to ContentTemplate. Aller
en arrière et regarder la façon dont je l'ai décrit le
problème, et vous verrez que cela fonctionne.
Avec belongs_to, la table accepte
la responsabilité de la clé étrangère. Donc
Le contenu a un content_template_id. Et
ContentTemplate n'a pas besoin de quoi que ce soit.
Je peux signaler à la volonté. Fait.
Bug belongs_to Statut serait plus approprié (depuis le Bug devrait prendre la clé étrangère). Sémantiquement, son exemple a du sens, mais le mien ne fait. Est-ce juste un caprice de rails où dans cette situation, il semble étrange, ou je ne suis pas la compréhension de quelque chose/de faire le mal?
Vous devez vous connecter pour publier un commentaire.
Oui, je pense que vous avez juste trouvé un peu bizarre scénario dans les Rails. Je suppose qu'il pourrait être utile de vue "état" comme une sorte de catégorie à laquelle le bug appartient — dans la lumière, c'est logique.
Vous n'avez pas expliquer précisément ce qu'est la nature de la relation entre le Bug et le Statut que vous souhaitez obtenir, mais je suppose que vous êtes intéressé par l'une des opérations suivantes:
has_many
dans le Bogue de classe etbelongs_to
dans le Statut de la classe,has_one
dans le Bogue de classe etbelongs_to
dans le Statut de la classe.Dans les deux cas, l'État contient la clé étrangère. Dans le second cas, la formulation est un peu bizarre, en raison du fait qu'une relation est en effet asymétrique (il devrait y avoir un FK sur un seul côté).
Si le Statut est juste un look-up/valeur-clé de la table, il semble que vous voudrez peut-être un habtm(
has_and_belongs_to_many
) relation entre le Statut et le Bug. Avec habtm, ce que vous finissez avec est unbugs_statuses
table de jointure qui abug_id
etstatus_id
colonnes avec vos bugs et les statuts des tables.