我有一个Rails模型,其中有一个非默认布尔字段,该字段可为空,并且正在尝试设置默认值。我发现了一篇关于避免3状态布尔问题的博客文章,因此正在尝试适应这一点。这是我拥有的迁移:
def change
change_column :table, is_foo, :boolean, null: false, default: false
end
由于数据库中存在空值,运行迁移失败。更新现有条目以允许模式更改的正确方法是什么?或者应该将非空控件添加到模型中:
validates :is_foo, presence: true
不确定将此添加到迁移中是否是“正确”的方法:
Table.update_all(:is_foo => false)
同样地,这个字段是由一个迁移添加的,没有额外的非空/默认参数。那么添加列的迁移是否也需要这个呢,还是默认设置了值?以下是我运行的迁移:
add_column :table, is_foo, :boolean
如果我在add_column上添加了
null: false, default: false
,所有的值都会被正确设置吗?