1
我有一个Rails 4表格,它保存了嵌套关联,使用simple_form
gem和Postgres作为DBMS。表格中保存的模型之一具有2个数字输入字段。对于这些领域的验证规则如下:Rails 4数值验证不投掷错误提交文本
validates_numericality_of :field1, greater_than: 0, only_integer: true, allow_nil: true
validates_numericality_of :field2, allow_nil: true
如果键入像“十”或“35”或“$$$$$”进入这些领域的字符串,发生任何验证错误,形式数据被保存,并且这些字段的值为nil
。如果我在field1
中输入负值或十进制值,则会显示预期的验证错误。
虽然这不太可能导致使用此表单的管理员出现大量问题,但我似乎无法解释为何发生这种情况。所有其他此表单的验证按预期工作。
为什么这些值转换为nil
?为什么我不会收到非数字验证错误?这仅仅是allow_nil
属性的一个恼人的怪癖吗?
感谢您的答复。这并不能解释为什么没有'only_integer'的第二个字段表现出相同的确切行为。我可以在第二个字段中输入“string”,它会被设置为“nil”并保存,而不是无法保存并显示错误。 – Todd