在一个模型中验证多个整数时,我注意到了一种奇怪的行为。
我正在使用Ruby 2.0.0
和Rails 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={}