La respuesta actualmente aceptada sobre esto no es realmente precisa ya que no agrega una clave externa de base de datos. Es solo agregar columnas enteras.
En Rails 4.2.x , el enfoque actual es:
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
Crear una migración:
rails generate migration migration_name
Para columnas existentes , en la migración agregue las claves foráneas así:
class MigrationName < ActiveRecord::Migration
def change
add_foreign_key :business_hours, :businesses
add_foreign_key :businesses, :users
end
end
Para Rails 4.x o si está agregando una columna nueva y desea que sea una clave externa, puede hacer esto, donde probablemente también desee especificar el índice como verdadero, pero eso no es parte del requisito de la clave externa:
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