在activerecord中自动重命名外键

时间:2016-06-06 13:50:25

标签: ruby-on-rails ruby activerecord rails-migrations

我正在进行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中所述。有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

如果Rails提供重命名外键会很棒但我没有找到如何告诉它这样做。 但是,您可以为引用users的每个表执行以下操作:

remove_foreign_key :posts, :users
rename_column      :posts, :user_id, :person_id
add_foreign_key    :posts, :people

这会保留您已有的参考资料。

小心使用表名,因为remove_foreign_key如果你忘记了这些名称(一些发生器会这样做,或者在你使用单数而不是复数的情况下发出警告的话)不会为你复数。