Rails复选框验证错误

时间:2013-08-07 21:44:23

标签: ruby-on-rails

如果取消选中复选框,我在复选框字段(Perishable can't be blank)上遇到验证错误。我可以查看日志,看到“perishable”=>“0”在未选中时通过,“perishable”=>“1”在选中时。 “perishable”在控制器中列为白名单,当选中该复选框时,它都可以正常工作。这是怎么回事?

型号:

class Product < ActiveRecord::Base
  validates_presence_of :perishable
end

迁移:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.boolean :perishable, :null => false
    end
  end
end

查看:

= f.label :perishable
= f.check_box :perishable

渲染视图:

<label for="product_perishable">Perishable *</label>
<input name="product[perishable]" type="hidden" value="0" />
<input id="product_perishable" name="product[perishable]" type="checkbox" value="1" />

1 个答案:

答案 0 :(得分:8)

您正在验证是否存在一个布尔字段,当false时显然会产生问题。

根据this answer

  

如果要验证是否存在布尔字段(实际值为truefalse),则需要使用validates_inclusion_of :field_name, :in => [true, false]