2017-09-30 2 views
0

J'ai essayé le suivantComment puis-je supprimer de manière réversible une clé étrangère sur une table lorsque la colonne ne correspond pas à la table?

remove_foreign_key :users, :asset_types, column: :seek_asset_type_id 

mais nous avons eu l'erreur

StandardError: An error has occurred, this and all later migrations canceled:
wrong number of arguments (given 3, expected 1..2)

La documentation indique qu'il utilise les mêmes options que #add_foreign_key.

Documentation

La colonne a été créée précédemment avec

add_reference :users, :seek_asset_type, foreign_key: {to_table: :asset_types} 

Ceci est la définition:

"fk_rails_4dcaa1c59c" FOREIGN KEY (seek_asset_type_id) REFERENCES asset_types(id) 

Répondre

0

S'il vous plaît enlever nom_table

remove_foreign_key :users, column: :seek_asset_type_id

+0

Mais alors ce n'est pas réversible. Comment sait-il quelle table recréer la clé étrangère? On pourrait penser que la table s'appelle 'seek_asset_types' quand elle s'appelle vraiment' asset_types'. – Chloe

+1

Ok, vous pouvez écraser la méthode UP et Down dans les migrations pour la rendre réversible. – Asmita

0

Try this Je l'ai testé et travaille pour moi.

remove_foreign_key :users, name: "seek_asset_type_id"