これについて現在受け入れられている回答は、データベースの外部キーを追加しないため、正確ではありません。整数列を追加するだけです。
Rails 4.2.xでは、現在のアプローチは次のとおりです。
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
移行を作成します。
rails generate migration migration_name
既存の列の場合、移行で次のように外部キーを追加します。
class MigrationName < ActiveRecord::Migration
def change
add_foreign_key :business_hours, :businesses
add_foreign_key :businesses, :users
end
end
Rails 4.xの場合、または新しい列を追加してそれを外部キーにしたい場合は、これを行うことができます。おそらく、インデックスを true として指定することもできますが、それは外部キーの要件の一部ではありません:
http://edgeguides.rubyonrails.org/active_record_migrations.html#creating-a-migration
class MigrationName < ActiveRecord::Migration
def change
add_reference :business_hours, :business, index: true, foreign_key: true
add_reference :businesses, :user, index: true, foreign_key: true
end
end