Frage

Ein bisschen Neuling Frage auf Schienen Assoziationen.

Ich habe ein Bug-Modell und ein Statusmodell. Der Status ist im Grunde nur ein Schlüssel / Wert-Paar-Tabelle. Von den Möglichkeiten zur Verfügung, würde ich Bug has_one Der Status sagen am meisten Sinn macht. Doch nach diese

  

Content belongs_to Content. Gehen   und zurück schauen, wie ich beschrieben die   Problem, und Sie werden sehen, dass es funktioniert.   Mit belongs_to akzeptiert die Tabelle   Verantwortung für den Fremdschlüssel. Damit   Inhalt hat einen content_template_id. Und   Content braucht nichts.   Ich kann nach Belieben darauf zeigen. Fertig.

Bug belongs_to Der Status wäre besser geeignet (da Bug den Fremdschlüssel nehmen sollte). Semantisch macht sein Beispiel Sinn, aber ich macht keine. Ist das nur eine Marotte von Schienen, wo es in dieser Situation seltsam aussieht, oder bin ich nicht zu verstehen, etwas / tut es falsch?

War es hilfreich?

Lösung

Ja, ich glaube, Sie haben gerade ein etwas seltsam aussehendes Szenario in Rails gefunden. Ich nehme an, es nützlich sein könnte, „Status“ als eine Art Kategorie die Fehler gehören zu denen zu sehen - in diesem Licht, macht es Sinn,

.

Andere Tipps

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

Sie nicht erklären genau, welche Art von Beziehung zwischen Bug und Status Sie erhalten möchten, aber ich nehme an, Sie in eine der folgenden interessiert sind:

  • one-to-many: In diesem Fall sollte es in Bug-Klasse und has_many in der Statusklasse belongs_to werden,
  • one-to-one. In diesem Fall sollte es in Bug-Klasse und has_one in Zustandsklasse belongs_to wird

In beiden Fällen Status, um den Fremdschlüssel enthält. Im zweiten Fall ist die Formulierung ein wenig merkwürdig, aufgrund der Tatsache, dass eine Eins-zu-Eins-Beziehung in der Tat asymmetrisch ist (es sollte auf der einen Seite ein FK sein only).

Wenn der Status nur eine Nachschau / Schlüsselwert-Tabelle ist, es klingt wie Sie eine HABTM (has_and_belongs_to_many) Beziehung zwischen Status- und Bug. Mit HABTM, was Sie am Ende mit ist ein bugs_statuses Tisch beitreten, die bug_id und status_id Spalte zusammen mit Ihrem Bugs und Status-Tabellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top