PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Adicionando chave estrangeira a um modelo de trilhos


A resposta atualmente aceita sobre isso não é realmente precisa, pois não adiciona uma chave estrangeira de banco de dados. É apenas adicionar colunas inteiras.

No Rails 4.2.x , a abordagem atual é:

http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys

Crie uma migração:
rails generate migration migration_name

Para colunas existentes , na migração adicione as chaves estrangeiras assim:
class MigrationName < ActiveRecord::Migration
  def change
    add_foreign_key :business_hours, :businesses
    add_foreign_key :businesses, :users
  end
end

Para Rails 4.x ou se você estiver adicionando uma nova coluna e quiser que seja uma chave estrangeira, você pode fazer isso, onde provavelmente também deseja especificar o índice como verdadeiro, mas isso não faz parte do requisito para a chave estrangeira:

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