5

Perishable can't be blank当复选框未选中时,我在复选框字段 ( ) 上遇到验证错误。我可以检查日志,看到“perishable”=>“0”在未选中时通过,“perishable”=>“1”在选中时通过。“易腐烂”在控制器中被列入白名单,并且在选中复选框时一切正常。这里发生了什么?

模型:

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" />
4

1 回答 1

8

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

根据这个答案

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

于 2013-08-07T21:57:54.947 回答