验证 rails 3 中 postgres 整数字段的数值性



我的postgres数据库表是用

t.integer :time_employed

我有这样的验证

validates :time_employed, numericality: true, allow_blank: true

我也试过

validates_numericality_of :time_employed, allow_blank: true

但他们都没有给我想要的结果。我在控制台中做了一些测试,似乎该字段始终设置为 0nil .如果我输入一个字符串,它被设置为 0 .

我将数据库字段更改为

t.string :time_employed

现在一切都像它应该的那样工作。这不是一个大问题,但我希望保持架构正确描述的数据。

我对数据库还不太了解,所以这让我陷入了困境。谁能解释一下这里发生了什么?

编辑:

问题是它允许空白条目,但如果我输入非数值,它不会引发错误。任何东西都会被验证为好,只是不会保存到数据库中。更改为t.string并且验证没有更改后,它工作正常。

我也尝试了allow_nil: true但它也有同样的效果。

替换这个

validates_numericality_of :time_employed, allow_blank: true

validates_numericality_of :time_employed, allow_nil: true

allow_blank API 文档中不存在,这可能是原因之一。

因为您的time_employed列在验证之前是类型转换的。

validates_numericality_of :time_employed_before_type_cast, allow_blank: true

应该工作。

相关内容

  • 没有找到相关文章

最新更新