首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在activerecord中自动重命名外键

在activerecord中自动重命名外键
EN

Stack Overflow用户
提问于 2016-06-06 21:50:25
回答 1查看 2K关注 0票数 2

我正在进行rails迁移以重命名一个表,并且我想自动重命名它的外键。例如,一个User有许多posts,我将User重命名为Person

代码语言:javascript
复制
def change
  rename_table :users, :people
end

我想自动创建像这样的迁移

代码语言:javascript
复制
def change
  rename_column :posts, :user_id, :person_id
end

我已经考虑过从迁移中获取模型,并查看其has_many模型,例如this answer中所描述的模型。有没有更简单的方法?

EN

回答 1

Stack Overflow用户

发布于 2017-07-13 16:33:42

如果Rails提供重命名外键,那就太好了,但我不知道如何告诉它这样做。但是,您可以对引用users的每个表执行以下操作

代码语言:javascript
复制
remove_foreign_key :posts, :users
rename_column      :posts, :user_id, :person_id
add_foreign_key    :posts, :people

这将保留您已有的引用。

注意表名,因为如果您忘记了,remove_foreign_key不会为您将名称变为复数(有些生成器会这样做,或者在您使用单数而不是复数的情况下警告您)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37659241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档