Assoziationen und (mehrfache) Fremdschlüssel in Schienen (3.2): wie man sie im Modell beschreibt und Migrationen aufschreibt

Ich habe 3 Modelle: Frage, Option, Regel

Frage has_many Optionen; Option benötigt einen Fremdschlüssel für question_id

Die Regeltabelle besteht aus 3 foreign_keys:

2 Spalten / Verweise auf Fragen-IDs -> Fremdschlüssel mit den Bezeichnungen 'Annahme_Frage_ID' und 'Konsequente_Frage_ID'1 Spalte / Verweis auf option_id -> Fremdschlüssel mit dem Namen option_id oder condition_id

Assoziationen für Regel: Frage hat_viele Regeln; und Option has_one-Regel

Ich möchte verstehen, wie Migrationen dafür geschrieben werden und wie dies mit den Anweisungen 'has_many' / 'belong_to', die ich in mein Modell schreibe, und der Option ': foreign_key' zusammenhängt, die ich in mein Modell aufnehmen kann.

Ich hatte dies für meine Option-Migration, bin mir aber nicht sicher, wie die Anweisung "add_index" in Bezug auf Fremdschlüssel funktioniert und wie ich sie für meine Regelmigration verwenden kann: (Meine Frage- und Optionsmodelle haben entsprechende has_many- und belong_to-Anweisungen - und gut funktionieren)

class CreateOptions < ActiveRecord::Migration
  def change
    create_table :options do |t|
      t.integer :question_id
      t.string :name
      t.integer :order

      t.timestamps
    end
    add_index :options, :question_id
  end
end

Danke für die Hilfe!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage