将字段添加到迁移表后,方法值为"nil"而不是"true"或"false"



我在schema.rb文件的"members"表中添加了一个名为"custom_design_enabled"的字段,作为默认值为true的布尔值。当我试图在rails控制台中更改此项时,它会显示字段为"nil",而不是"true"或"false"。我认为迁移过程中有一部分是我无意中遗漏的,它为方法"custom_design_enabled"提供了一个值。有人能帮我吗?

这可能是因为您没有在新字段中指定默认值。解决此问题的最简单方法是创建一个新的迁移。创建一个新的迁移文件(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而不是updown,并且rails不知道如何撤消它,那么这可能会失败,但值得一试。

更新:如果回滚不起作用,您可以将原始迁移更改为:

def up
add_column :members, :custom_design_enabled, :boolean
end
def down
remove_column :members, :custom_design_enabled
end

然后做rake db:rollback

最新更新