问题描述
我在我的schema.rb文件中的“成员”表中添加了一个名为“ 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,default: nil
end
或者,您可以尝试使用rake db:rollback
回滚上一次迁移,并将null: false,default: true
添加到原始迁移的add_column
方法中。如果生成的迁移使用的是change
而不是up
和down
,这可能会失败,并且rails无法弄清楚如何撤消它,但是值得一试。
更新:如果回滚不起作用,则可以将原始迁移更改为:
def up
add_column :members,:boolean
end
def down
remove_column :members,:custom_design_enabled
end
然后执行rake db:rollback
。