PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Hinzufügen eines Fremdschlüssels zu einem Rails-Modell

Die derzeit akzeptierte Antwort darauf ist nicht wirklich genau, da sie keinen Datenbank-Fremdschlüssel hinzufügt. Es werden nur Integer-Spalten hinzugefügt.

In Rails 4.2.x , ist der aktuelle Ansatz:

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

Erstellen Sie eine Migration:

rails generate migration migration_name

Für vorhandene Spalten , fügen Sie bei der Migration die Fremdschlüssel wie folgt hinzu:

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

Für Rails 4.x oder wenn Sie eine neue Spalte hinzufügen und möchten, dass es sich um einen Fremdschlüssel handelt, können Sie dies tun, wobei Sie wahrscheinlich auch den Index als wahr angeben möchten, aber das ist nicht Teil der Anforderung für den Fremdschlüssel:

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