gpt4 book ai didi

Ruby on Rails 映射现有表的 BigDecimal 字段

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:06 34 4
gpt4 key购买 nike

我为现有表格创建了一个 Rails 模型类。一些表字段是在 Postgres 数据库中定义为 numeric(19,2) 的十进制字段。当我打开 Rails 控制台并像这样获取其中一个对象时:

 ExistingTableModel.first.total
#<BigDecimal:4bfd250,'0.692E3',9(18)>

所以,我得到一个 BigDecimal 9(18) 。这是一个问题,因为当我进行求和之类的操作时,由于四舍五入,结果并不理想。

我如何强制 Rails 将这些字段映射到带 2 位小数的 BigDecimal?

谢谢!

最佳答案

您可以覆盖属性访问器。假设您有一个带有属性 foo numeric(19,2) 的遗留 Postgres 表

model ExistingTableModel < ActiveRecord::Base
def foo
read_attribute(:foo).round(2)
end
end

这将使每次访问 foo 属性时四舍五入到小数点后两位的精度。

关于Ruby on Rails 映射现有表的 BigDecimal 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467842/

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