La réponse actuellement acceptée à ce sujet n'est pas vraiment précise car elle n'ajoute pas de clé étrangère à la base de données. Il s'agit simplement d'ajouter des colonnes d'entiers.
Dans Rails 4.2.x , l'approche actuelle est :
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
Créer une migration :
rails generate migration migration_name
Pour les colonnes existantes , dans la migration, ajoutez les clés étrangères comme ceci :
class MigrationName < ActiveRecord::Migration
def change
add_foreign_key :business_hours, :businesses
add_foreign_key :businesses, :users
end
end
Pour Rails 4.x ou si vous ajoutez une nouvelle colonne et que vous voulez qu'il s'agisse d'une clé étrangère, vous pouvez le faire, où vous voudrez probablement aussi spécifier l'index comme vrai, mais cela ne fait pas partie de l'exigence de la clé étrangère :
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