PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Ajouter une clé étrangère à un modèle de rails

La réponse actuellement acceptée à ce sujet n'est pas vraiment précise car elle n'ajoute pas de clé étrangère à la base de données. Il s'agit simplement d'ajouter des colonnes d'entiers.

Dans Rails 4.2.x , l'approche actuelle est :

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

Créer une migration :

rails generate migration migration_name

Pour les colonnes existantes , dans la migration, ajoutez les clés étrangères comme ceci :

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

Pour Rails 4.x ou si vous ajoutez une nouvelle colonne et que vous voulez qu'il s'agisse d'une clé étrangère, vous pouvez le faire, où vous voudrez probablement aussi spécifier l'index comme vrai, mais cela ne fait pas partie de l'exigence de la clé étrangère :

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