2016-08-24 1 views
4

Je l'ai déjà existant clé étrangère dans la base de données créée de cette façon:Ajouter: on_delete à foreign_key déjà existant dans des rails de migration

class CreateUser < ActiveRecord::Migration 
    def change 
    create_table do ... end 
    add_foreign_key :users, :admins, column: :admin_id 
    end 
end 

mais il a oublié d'ajouter on_delete: :nullify. La migration est déjà poussée & utilisé en production. Je veux ajouter une nouvelle migration qui ajoutera la suppression de cascale pour cette contrainte PK. Comment y parvenir?

Répondre

4

Vous pouvez supprimer et ajouter la clé étrangère dans la migration suivante:

class ChangeForgeinKeyOnUsersTable < ActiveRecord::Migration[5.0] 
    def change 
    remove_foreign_key :users, column: :admin_id 
    add_foreign_key :users, :admins, column: :admin_id, on_delete: :nullify 
    end 
end 
+0

aussi: si la colonne est déjà rempli avec les données n'oubliez pas de migrer les données aussi bien (à savoir tout sélectionner et insérer tous) –