sql >> Base de Datos >  >> RDS >> PostgreSQL

Agregar clave externa a un modelo de rieles

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