Associações e chaves múltiplas (múltiplas) em trilhos (3.2): como descrevê-las no modelo e redigir migrações

Eu tenho 3 modelos: pergunta, opção, regra

Pergunta has_many options; A opção precisa de uma chave estrangeira para o question_id

A tabela de regras consiste em 3 foreign_keys:

2 colunas / referências a question_ids -> chaves estrangeiras nomeadas como 'assumption_question_id' e 'consequent_question_id'1 coluna / referência a option_id -> chave estrangeira nomeada como option_id ou condition_id

Associações para Regra: Pergunta has_many rules; e opção has_one regra

Eu quero entender como escrever migrações para isso, e como isso se associa às declarações 'has_many' / 'belongs_to' que eu escrevo no meu modelo, e a opção ': foreign_key' que eu posso incluir no meu modelo.

Eu tinha isso para minha migração de opções, mas não tenho certeza de como a instrução "add_index" funciona em termos de chaves estrangeiras e como posso usá-las para minha migração de regras: (meus modelos de pergunta e opções têm instruções has_many e belongs_to apropriadas - e funciona bem)

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

Obrigado pela ajuda!

questionAnswers(3)

yourAnswerToTheQuestion