我尝试了以下
remove_foreign_key :users, :asset_types, column: :seek_asset_type_id
但得到了错误
StandardError:发生错误,此以及所有后续迁移都已取消:
错误的参数数量(给定3,预期1..2)
文档说它使用与#add_foreign_key
相同的选项。
该列是先前使用
创建的add_reference :users, :seek_asset_type, foreign_key: {to_table: :asset_types}
这是定义:
"fk_rails_4dcaa1c59c" FOREIGN KEY (seek_asset_type_id) REFERENCES asset_types(id)
答案 0 :(得分:4)
使用revert
:
def change
revert do
add_reference :users, :seek_asset_type, foreign_key: { to_table: :asset_types }
end
end
另一种方法是通过名称恢复迁移:
def change
revert AddAssetTypeReferenceToUsers
# I made up this migration name,
# so please fill in the appropriate name
end
答案 1 :(得分:1)
这似乎是remove_foreign_key
的不足之处,但是您可以通过使用add_foreign_key
定义一个reversible
逆向动作来解决此问题:
reversible do |dir|
dir.up do
remove_foreign_key :users, column: :seek_asset_type
end
dir.down do
add_foreign_key :users, :asset_types, column: :seek_asset_type
end
end
答案 2 :(得分:0)
请删除table_name
remove_foreign_key:users,column :: seek_asset_type_id
答案 3 :(得分:0)
试试这个 我已经对它进行了测试并为我工作。
remove_foreign_key:用户,姓名:" seek_asset_type_id"