我的 postgres 数据库表是用
设置的t.integer :time_employed
我有这样的验证
validates :time_employed, numericality: true, allow_blank: true
我也试过了
validates_numericality_of :time_employed, allow_blank: true
但他们都没有给我想要的结果。我在控制台中做了一些测试,似乎该字段总是设置为 0
或 nil
。如果我输入一个字符串,它会被设置为 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 docs 中这可能是原因之一。
关于ruby-on-rails - 验证 rails 3 中 postgres 整数字段的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14517285/