我在我的 schema.rb 文件中的“成员”表中添加了一个名为“custom_design_enabled”的字段,作为默认值为 true 的布尔值。当我尝试在 Rails 控制台中更改它时,它说该字段是“nil”而不是“true”或“false”。我认为我不小心遗漏了迁移过程的一部分,它为“custom_design_enabled”方法提供了一个值。谁能帮我解决这个问题?
问问题
44 次
1 回答
0
这很可能发生,因为您没有在新字段上指定默认值。解决此问题的最简单方法是创建新的迁移。创建一个新的迁移文件 ( rails g migration change_custom_design_enabled_default
) 并在迁移文件中尝试:
def up
change_column :members, :custom_design_enabled, :boolean, default: true
end
def down
change_column :members, :custom_design_enabled, :boolean, default: nil
end
或者,您可以尝试回滚上次迁移rake db:rollback
并添加null: false, default: true
到原始迁移的add_column
方法。如果生成的迁移使用change
而不是up
anddown
和 rails 无法弄清楚如何撤消它,这可能会失败,但值得一试。
更新:如果回滚不起作用,您可以将原始迁移更改为:
def up
add_column :members, :custom_design_enabled, :boolean
end
def down
remove_column :members, :custom_design_enabled
end
然后再做rake db:rollback
。
于 2020-09-05T06:32:17.710 回答