Rails 5:validation复选框的接受程度

我有一个带有一些嵌套字段的注册表单,在这个表单中我添加了一个服务条款的复选框。

我正在尝试validation何时选中复选框,如果没有则返回错误。

validates_acceptance_of :agreement, :allow_nil => true, :accept => true, :on => :create 

我有一个布尔列,在accounts表中设置为默认值。

 add_column :accounts, :agreement, :boolean, default: false 

此外,我已将:agreement添加到允许的控制器参数中。

这是forms:

   
"form-control" %>
"form-control" %>
"form-control" %>
"form-control" %>
"form-control" %>
"form-control" %>
"form-control" %>
"form-control", :id=>"sign-frm-input" } %>
I agree to the 1) %>.
'btn btn-primary' %>

但它返回表格错误agreement must be accepted即使我接受它。 任何想法我可能会遗漏的东西!

尝试: validates :agreement, acceptance: {accept: true} , on: :create, allow_nil: false

如果您要validation接受,则不希望:allow_nil => true

您可以更改模型validation并进行测试。

 validates :agreement, inclusion: {in: [true]} 

或者您可以使用其他validation

 validates :agreement, acceptance: { accept: true }