Asociaciones y (múltiples) claves externas en los rieles (3.2): cómo describirlas en el modelo y redactar las migraciones

Tengo 3 modelos: Pregunta, Opción, Regla

Pregunta tiene muchas opciones; Opción necesita una clave externa para question_id

La tabla de reglas consta de 3 teclas foráneas:

2 columnas / referencias a question_ids -> claves foráneas nombradas como 'assumption_question_id' y 'consecuent_question_id'1 columna / referencia a option_id -> clave externa nombrada como option_id o condition_id

Asociaciones para la regla: la pregunta tiene muchas reglas; y la regla has_one Option

Quiero entender cómo redactar las migraciones para esto, y cómo eso se asocia a las declaraciones 'has_many' / 'pertenece_ a' que escribo en mi modelo, y la opción ': foreign_key' que puedo incluir en mi modelo.

Tenía esto para mi migración de opciones, pero no estoy seguro de cómo funciona la declaración "add_index" en términos de claves externas, y cómo puedo usarla para mi migración de reglas: (mis modelos de preguntas y opciones tienen declaraciones adecuadas de has_many y corresponde a - y trabajar bien)

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

¡Gracias por la ayuda!