Het momenteel geaccepteerde antwoord hierop is niet echt nauwkeurig omdat het geen externe sleutel voor de database toevoegt. Het is gewoon kolommen met gehele getallen toevoegen.
In Rails 4.2.x , de huidige aanpak is:
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
Maak een migratie:
rails generate migration migration_name
Voor bestaande kolommen , voeg in de migratie de externe sleutels als volgt toe:
class MigrationName < ActiveRecord::Migration
def change
add_foreign_key :business_hours, :businesses
add_foreign_key :businesses, :users
end
end
Voor Rails 4.x of als u een nieuwe kolom toevoegt en als u wilt dat het een externe sleutel is, kunt u dit doen, waarbij u waarschijnlijk ook de index als waar wilt specificeren, maar dat is geen onderdeel van de vereiste voor de externe sleutel:
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