Question

Un peu d'une question de débutant sur les associations de rails.

J'ai un modèle de Bug, et un modèle d'état. Le statut est fondamentalement juste une table de paires clé / valeur. Sur les choix disponibles, je dirais Bug has_one Etat fait le plus de sens. Toutefois, selon cette

  

Contenu belongs_to ContentTemplate. Aller   en arrière et voir comment je l'ai décrit la   problème, et vous verrez que cela fonctionne.   Avec belongs_to, la table accepte   la responsabilité de la clé étrangère. Alors   Contenu a content_template_id. Et   ContentTemplate n'a pas besoin de quoi que ce soit.   Je peux indiquer à volonté. Fait.

Bug belongs_to Etat serait plus approprié (puisque Bug devrait prendre la clé étrangère). Sémantiquement, son exemple est logique, mais le mien fait rien. Est-ce juste une bizarrerie de rails où, dans cette situation, il semble étrange, ou suis-je pas comprendre quelque chose / faire mal?

Était-ce utile?

La solution

Oui, je pense que vous venez de trouver un scénario un peu bizarre dans Rails. Je suppose qu'il pourrait être utile de voir « statut » comme une sorte de catégorie à laquelle appartient le bug - dans cette optique, il est logique

.

Autres conseils

TABLE:
    Bug
    id integer
    desc string
    status_id integer fk

    Status
    id integer
    desc string

RAILS MODEL:
    Bug
    belongs_to :status

    Status
    has_many :bugs

Vous n'avez pas expliqué précisément ce genre de relation entre Bug et le statut que vous souhaitez obtenir, mais je suppose que vous êtes intéressé par un des éléments suivants:

  • un à plusieurs: dans ce cas, il devrait être has_many en classe Bug et belongs_to dans la classe d'état,
  • one-to-one. Dans ce cas, il devrait être has_one en classe Bug et belongs_to dans la classe d'état

Dans les deux cas Statut contient la clé étrangère. Dans le second cas, la formulation est un peu bizarre, en raison du fait que l'un-à-un est en effet asymétrique (il devrait y avoir une FK sur un côté seulement).

Si l'état est juste une consultation / table valeur de clé, il semble que vous voudrez peut-être un HABTM (has_and_belongs_to_many) entre le statut et Bug. Avec HABTM, ce que vous vous retrouverez avec est une bugs_statuses table de jointure qui a des colonnes de bug_id et status_id avec vos bogues et tables statuts.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top