gpt4 book ai didi

ruby-on-rails - 提交文本时 Rails 4 数字验证不抛出错误

转载 作者:行者123 更新时间:2023-11-29 13:24:06 25 4
gpt4 key购买 nike

我有一个保存嵌套关联的 Rails 4 表单,使用 simple_form gem 和 Postgres 作为 DBMS。保存在表单中的模型之一有 2 个数字输入字段。这些字段的验证规则如下:

validates_numericality_of :field1, greater_than: 0, only_integer: true, allow_nil: true
validates_numericality_of :field2, allow_nil: true

如果我在这些字段中键入“十”或“三十五”或“$$$$$”之类的字符串,不会发生验证错误,表单数据会被保存,并且这些字段会被赋予 nil 值。如果我将负值或小数值放入 field1,则会出现预期的验证错误。

虽然这不太可能对使用此表单的管理员造成大量问题,但我似乎无法解释为什么会发生这种情况。此表单的所有其他验证都按预期工作。

为什么这些值被转换为nil?为什么我没有收到非数字验证错误?这只是 allow_nil 属性的一个恼人的怪癖吗?

最佳答案

根据 documentation ,当您设置 only_integer: true 时,您的值将应用于正则表达式 /\A[+\-]?\d+\Z/:

"123" =~ /\A[+\-]?\d+\Z/
#=> 0
"$$$$$" =~ /\A[+\-]?\d+\Z/
#=> nil

关于ruby-on-rails - 提交文本时 Rails 4 数字验证不抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com