dim*_*mid 3 ruby activerecord ruby-on-rails rails-migrations
我正在进行 Rails 迁移以重命名表,并且我想自动重命名其外键。例如 aUser有很多posts,我重命名User为Person
def change
rename_table :users, :people
end
Run Code Online (Sandbox Code Playgroud)
我想创建自动迁移,例如
def change
rename_column :posts, :user_id, :person_id
end
Run Code Online (Sandbox Code Playgroud)
我想过从迁移中获取模型并查看其has_many模型,例如,如本答案中所述。有没有更简单的方法?
如果 Rails 能够重命名外键,那就太好了,但我没有找到如何告诉它这样做。但是,您可以对每个表引用执行以下操作users:
remove_foreign_key :posts, :users
rename_column :posts, :user_id, :person_id
add_foreign_key :posts, :people
Run Code Online (Sandbox Code Playgroud)
这会保留您已有的参考文献。
请小心表名,因为remove_foreign_key如果您忘记这样做,表名不会为您复数(某些生成器会这样做,或者在您使用单数而不是复数时警告您)。