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

时间:2011-11-02 13:42:47

标签: ruby-on-rails ruby ruby-on-rails-3

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

验证

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

5 个答案:

答案 0 :(得分:119)

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

答案 1 :(得分:40)

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

答案 2 :(得分:15)

您应该使用allow_blank

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

答案 3 :(得分:11)

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

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

答案 4 :(得分:0)

你也可以这样写......

validates_numericality_of :network_id, allow_nil: true