Rails 验证需要数字性,即使存在性没有设置为 true

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

验证:

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
40408 次浏览
validates :network_id, :numericality => true, :allow_nil => true

你应该使用 allow_blank

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

在 Rails 4(红宝石2)中,你可以写:

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

你也可以这样写。

validates_numericality_of :network_id, allow_nil: true