Obecnie akceptowana odpowiedź na to nie jest naprawdę dokładna, ponieważ nie dodaje klucza obcego bazy danych. To tylko dodawanie kolumn liczb całkowitych.
W Rails 4.2.x , obecne podejście to:
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
Utwórz migrację:
rails generate migration migration_name
Dla istniejących kolumn , podczas migracji dodaj klucze obce w następujący sposób:
class MigrationName < ActiveRecord::Migration
def change
add_foreign_key :business_hours, :businesses
add_foreign_key :businesses, :users
end
end
Dla szyny 4.x lub jeśli dodajesz nową kolumnę i chcesz, aby był to klucz obcy, możesz to zrobić, gdzie prawdopodobnie chcesz również określić indeks jako prawdziwy, ale nie jest to częścią wymogu dla klucza obcego:
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