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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了即使存在未设置为true,Rails验证也需要数值相关的知识,希望对你有一定的参考价值。

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

验证:

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
答案
validates :network_id, :numericality => true, :allow_nil => true
另一答案
    validates :network_id, :numericality => {:allow_blank => true}
另一答案

你应该使用allow_blank

validates :network_id,    :numericality => true, :allow_blank => true
另一答案

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

validates :network_id, numericality: { greater_than_or_equal_to: 0, allow_nil: true }
另一答案

你也可以这样写...

validates_numericality_of :network_id, allow_nil: true

以上是关于即使存在未设置为true,Rails验证也需要数值的主要内容,如果未能解决你的问题,请参考以下文章

即使 Rails 服务器配置为接受所有请求,Angular 发布请求也未通过预检

渲染 json 未显示在 rails 4 的视图中

Elastic beanstalk Rails - 即使我设置了暂存环境,也默认为生产环境

Rails - 验证:如果一个条件为真

用于跟踪验证错误的 Rails 插件

为啥即使 objectEquality 设置为 true,$watch 也不会触发?