PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Aggiunta di una chiave esterna a un modello di binari

La risposta attualmente accettata su questo non è molto accurata in quanto non aggiunge una chiave esterna del database. Sta solo aggiungendo colonne intere.

In Rails 4.2.x , l'approccio attuale è:

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

Crea una migrazione:

rails generate migration migration_name

Per colonne esistenti , nella migrazione aggiungi le chiavi esterne in questo modo:

class MigrationName < ActiveRecord::Migration
  def change
    add_foreign_key :business_hours, :businesses
    add_foreign_key :businesses, :users
  end
end

Per Rails 4.x o se stai aggiungendo una nuova colonna e vuoi che sia una chiave esterna puoi farlo, dove probabilmente vuoi anche specificare l'indice come vero, ma questo non fa parte del requisito per la chiave esterna:

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