RoR4:整数验证

时间:2014-05-17 09:20:25

标签: validation ruby-on-rails-4 rails-activerecord

在一个模型中验证多个整数时,我注意到了一种奇怪的行为。 我正在使用Ruby 2.0.0Rails 4.0

想象一下,我有四个整数:i1,i2,i3和i4。 我正在用这些规则验证它们:

validates :i1, allow_blank: true, length: { in: 1..3 }, numericality: { only_integer: true }
validates :i2, allow_blank: true, length: { in: 1..3 }, numericality: { only_integer: true }
validates :i3, allow_blank: true, length: { in: 1..3 }, numericality: { only_integer: true }
validates :i4, allow_blank: true, length: { in: 1..3 }, numericality: { only_integer: true }

现在当将i1,i2,i3和i4设置为nil并保存记录时,Rails会向我发送"rollback transaction"-message并且不保存记录。当我查找record.errors时,没有列出任何错误。当我将验证中列出的最后一个整数(在本例中为i4)设置为某个整数(0到X)时,所有验证都会通过并保存记录。

当我在模型中仅使用3个整数并将前两个整数设置为nil而将最后一个整数(那个时间i3)设置为某个整数时,也会发生同样的情况。

为什么会这样?这不是它应该如何运作,是吗?验证说整数应该只是整数。即使它们在验证中列出的最后一个整数为nil时为not nil,它们似乎也是有效的。

我知道有很多丑陋的工作,但我希望在我的项目中保持一切清洁。

提前致谢, 塞巴斯蒂安

修改

返回的确切消息只不过是:

(0.1ms)  rollback transaction

如果我在控制台中输入 record.errors ,@ messages中只有一个空字符串:

<record data>, @messages={}

0 个答案:

没有答案