Domanda

Un po 'di una domanda newbie sulle associazioni rotaie.

Ho un modello Bug, e un modello di stato. Stato è fondamentalmente solo un tavolo coppia chiave / valore. Tra le scelte disponibili, direi Bug has_one Stato ha più senso. Tuttavia, secondo questo

  

Contenuto belongs_to ContentTemplate. Partire   indietro e guardare a come ho descritto la   problema, e vedrete che funziona.   Con belongs_to, la tabella accetta   la responsabilità per la chiave esterna. Così   Contenuto ha un content_template_id. E   ContentTemplate non ha bisogno di nulla.   Posso indicare a piacimento. Fatto.

Bug belongs_to Stato sarebbe più opportuno (dal Bug dovrebbe prendere la chiave esterna). Semanticamente, il suo esempio ha un senso, ma la mia fa nessuno. Questo è solo un capriccio di rotaie dove in questa situazione sembra strano, o sono io senza capire qualcosa / facendo male?

È stato utile?

Soluzione

Sì, penso che hai appena trovato uno scenario un po 'strano-guardando in Rails. Suppongo che potrebbe essere utile per visualizzare "stato" come una specie di categoria a cui appartiene il bug - in quella luce, ha senso

.

Altri suggerimenti

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

non ha spiegato con precisione che tipo di rapporto tra il Bug e di stato che si desidera ottenere, ma suppongo che voi siete interessati a uno dei seguenti:

  • uno-a-molti: in questo caso ci dovrebbe essere has_many in classe Bug e belongs_to in classe Stato,
  • uno-a-uno. In questo caso ci dovrebbe essere has_one in classe Bug e belongs_to in classe Stato

In entrambi i casi di stato contiene la chiave esterna. Nel secondo caso il testo è un po 'strano, a causa del fatto che uno-a-uno è infatti asimmetrica (ci dovrebbe essere un FK su un solo lato).

Se lo stato è solo una tabella di look-up / valore-chiave, suona come si potrebbe desiderare un HABTM (has_and_belongs_to_many) rapporto tra Stato e Bug. Con HABTM, quello che ritroverete con è un bugs_statuses join tabella che ha bug_id e status_id colonne con i bug e gli stati tabelle.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top