rails中check_box的默认值,是否使用验证失败?

时间:2012-07-03 13:39:49

标签: ruby-on-rails-3

我正在尝试在表单上设置复选框的默认值,这样它就会为真,除非用户取消选中它。通常,我可以在复选框

上将:checked属性设置为true

f.check_box :send_emails, :checked => true

但是,如果表单上的验证失败,并且用户取消选中该框,则会在重新呈现“新”操作时再次检查该框。即使重新呈现时用户对象的值确实为false,因为我将“checked”属性设置为true,它会忽略该值。

为了解决这个问题,我把它放在控制器中以便进行新的操作 @user.send_emails ||= true

看起来很难看,所以我正在寻找差异化的方法。有人想出不同的东西吗?

1 个答案:

答案 0 :(得分:1)

您可以在迁移中将:send_emails的默认值设置为true

以下是一个示例,创建迁移以更改字段的默认值:

class AddDefaultTrueToSendEmails < ActiveRecord::Migration
  def change
    change_column_default(:users, :send_emails, true)
  end
end