【发布时间】:2015-11-16 13:51:03
【问题描述】:
我有一个向用户表添加外键的迁移。
[timestamp]_add_group_id_to_users.rb
在这个迁移文件中,我为其指定了一个默认值:
def self.up
add_column :users, :group_id, :integer, :default => 1
end
但是当我们假设用户现在拥有group_id: 4 时会发生什么
另一个功能将被推送到生产环境中?
是否会再次运行所有迁移文件? 用户的 group_ids 会被覆盖吗?
我是否应该指定类似“如果 group_id 为 nil 则覆盖它,但如果它不是并且如果它不同于 1 则不要这样做”?
【问题讨论】:
-
只有在没有给定值时才使用默认值
-
@YuryLebedev 你能详细说明一下吗?
-
"当新行被创建并且没有为某些列指定值时,这些列将被填充它们各自的默认值。"您现有的数据不会被默认列更改,默认值只会为具有空
group_id的新记录设置。 postgresql.org/docs/9.4/static/ddl-default.html -
因此,如果您需要将
group_id显式设置为 1 为空group_id的现有用户,则需要通过数据迁移手动设置它
标签: ruby-on-rails ruby-on-rails-3 activerecord