我正在进行rails迁移以重命名一个表,并且我想自动重命名它的外键。例如,一个User有许多posts,我将User重命名为Person
def change
rename_table :users, :people
end我想自动创建像这样的迁移
def change
rename_column :posts, :user_id, :person_id
end我已经考虑过从迁移中获取模型,并查看其has_many模型,例如this answer中所描述的模型。有没有更简单的方法?
发布于 2017-07-13 16:33:42
如果Rails提供重命名外键,那就太好了,但我不知道如何告诉它这样做。但是,您可以对引用users的每个表执行以下操作
remove_foreign_key :posts, :users
rename_column :posts, :user_id, :person_id
add_foreign_key :posts, :people这将保留您已有的引用。
注意表名,因为如果您忘记了,remove_foreign_key不会为您将名称变为复数(有些生成器会这样做,或者在您使用单数而不是复数的情况下警告您)。
https://stackoverflow.com/questions/37659241
复制相似问题