ruby-on-rails - 验证 rails 3 中 postgres 整数字段的数值

标签 ruby-on-rails ruby-on-rails-3 postgresql

我的 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 docs 中这可能是原因之一。

关于ruby-on-rails - 验证 rails 3 中 postgres 整数字段的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14517285/

相关文章:

sql - 带有 SUM 的 Postgres LEFT JOIN,缺少记录

sql - 如何解决 raster_columns 问题?

ruby-on-rails - RVM:如何动态导出路径中的gem可执行目录?

ruby-on-rails - Rails 动态错误页面(404、422、500)显示为空白

ruby-on-rails - 连接两个字段 activerecord

ruby-on-rails - 如何根据实例存储在数据库中之前的状态进行一些检查?

javascript - rails 4 : coffeescript only works when there is a post request or when i reload the page

ruby-on-rails - Cancan 不显示授权的 View 元素

ruby-on-rails - rails 3 : How not to include column's name in a validation message without plugins?

postgresql - 选择本地时间为上午 8 点左右的项目