我正在尝试在表单上设置复选框的默认值,这样它就会为真,除非用户取消选中它。通常,我可以在复选框
上将:checked属性设置为true
f.check_box :send_emails, :checked => true
但是,如果表单上的验证失败,并且用户取消选中该框,则会在重新呈现“新”操作时再次检查该框。即使重新呈现时用户对象的值确实为false,因为我将“checked”属性设置为true,它会忽略该值。
为了解决这个问题,我把它放在控制器中以便进行新的操作
@user.send_emails ||= true
看起来很难看,所以我正在寻找差异化的方法。有人想出不同的东西吗?
答案 0 :(得分:1)
您可以在迁移中将:send_emails
的默认值设置为true
。
以下是一个示例,创建迁移以更改字段的默认值:
class AddDefaultTrueToSendEmails < ActiveRecord::Migration
def change
change_column_default(:users, :send_emails, true)
end
end