0

我在我的 schema.rb 文件中的“成员”表中添加了一个名为“custom_design_enabled”的字段,作为默认值为 true 的布尔值。当我尝试在 Rails 控制台中更改它时,它说该字段是“nil”而不是“true”或“false”。我认为我不小心遗漏了迁移过程的一部分,它为“custom_design_enabled”方法提供了一个值。谁能帮我解决这个问题?

4

1 回答 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而不是upanddown和 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 回答