gpt4 book ai didi

ruby-on-rails - Ruby/Rails - 如何验证小数位数?

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:59 33 4
gpt4 key购买 nike

如何根据小数位进行验证?例如,假设我们要存储小数点后最多 2 位小数的酒店评级。 4.34. 3.76.等等

我已经在线阅读了基于您绑定(bind)到该列的精度/比例截断的 sqlite。因此,如果您的精度为 3,比例为 2,然后输入 1.34567,将存储 1.35。

但是,我使用的是 postgres,但情况并非如此。我输入这个,尽管我的精度为 3 比例 2,但数据库以某种方式存储了完整的东西。

t.decimal :my_column, precision: 3, scale: 2

那么,我该如何验证这种事情,为什么 postgres 存储超过 2 个小数位开始?

最佳答案

只有当值为字符串时,小数位数才重要。将其转换为数字后,它有任意多位小数,零位或更多位。

因此,执行此验证的时间是在输入时(当它是一个字符串时,因为来自用户的所有输入始终是一个字符串)然后强制执行正确的显示在输出上,当它再次是一个字符串时。在所有其他时间,您不必担心小数位数。

就 Rails 而言,您可以使用访问器方法为您做一些验证:

def my_column=(value)
if value[/\A\d+\.\d\d\z/]
write_attribute :my_column, value
else
errors.add(:my_column, :invalid)
end
end

您不能使用传统的验证器,因为字符串->十进制转换将在您的验证器运行之前发生。

关于ruby-on-rails - Ruby/Rails - 如何验证小数位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24098990/

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