sql >> Database >  >> RDS >> PostgreSQL

Externe sleutel toevoegen aan een railsmodel

Het momenteel geaccepteerde antwoord hierop is niet echt nauwkeurig omdat het geen externe sleutel voor de database toevoegt. Het is gewoon kolommen met gehele getallen toevoegen.

In Rails 4.2.x , de huidige aanpak is:

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

Maak een migratie:

rails generate migration migration_name

Voor bestaande kolommen , voeg in de migratie de externe sleutels als volgt toe:

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

Voor Rails 4.x of als u een nieuwe kolom toevoegt en als u wilt dat het een externe sleutel is, kunt u dit doen, waarbij u waarschijnlijk ook de index als waar wilt specificeren, maar dat is geen onderdeel van de vereiste voor de externe sleutel:

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


  1. Hoe te bestellen op datum in MySQL

  2. bestellen op newid() - hoe werkt het?

  3. Lock-in van databaseleveranciers voor MySQL of MariaDB vermijden

  4. Eenvoudige recursieve query in Oracle