即使存在未设置为true,Rails验证也需要数值

问题描述 投票:59回答:5

我正在尝试保存一个没有一个字段集的记录 - 它在模型中具有验证数值。即使验证中不需要存在,它仍然会抛出该字段不是数字的错误。

验证:

validates :network_id,    :numericality => true

代码就是保存模型:

networks.each do |network|
  network.url = network.raw_data.link
  network.save!
end

错误:

Validation failed: Network is not a number
ruby-on-rails ruby ruby-on-rails-3
5个回答
119
投票
validates :network_id, :numericality => true, :allow_nil => true

40
投票
    validates :network_id, :numericality => {:allow_blank => true}

15
投票

你应该使用allow_blank

validates :network_id,    :numericality => true, :allow_blank => true

10
投票

在Rails 4(Ruby 2)中,您可以编写:

validates :network_id, numericality: { greater_than_or_equal_to: 0, allow_nil: true }

0
投票

你也可以这样写...

validates_numericality_of :network_id, allow_nil: true
© www.soinside.com 2019 - 2024. All rights reserved.