gpt4 book ai didi

ruby-on-rails - 比例部分更改时,Rails 十进制(货币)数不保存

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

我在 Rails 中创建了一个价格字段,它创建为精度为 8、小数位数为 2 的小数(或在 Postgres 中为 numeric(8,2))。当我尝试更新比例部分时,它会生成一个空事务,但我不明白为什么。知道发生了什么事吗?

控制台输出:

irb(main):051:0> puts o.price
8.0
=> nil

irb(main):052:0> o.price = "8,22"
=> "8,22"

irb(main):053:0> puts o.price
8.22
=> nil

irb(main):054:0> o.save
(0.5ms) BEGIN
(0.4ms) COMMIT
=> true

irb(main):055:0> o.reload; puts o.price
8.0
=> nil

编辑: 更新整数正常工作,问题仅在更新比例部分时出现:

irb(main):017:0* puts o.price
8.0
=> nil

irb(main):018:0> o.price = "9,22"
=> "9,22"

irb(main):019:0> o.save
(0.4ms) BEGIN
(0.9ms) UPDATE "order_items" SET "price" = 9.22, "updated_at" = '2014-01-10 20:17:31.753908' WHERE "order_items"."id" = 1469
(22.1ms) COMMIT
=> true

irb(main):020:0> o.reload; puts o.price
9.22
=> nil

编辑 2: 还测试了其他小数(8,22 => 8,44)并且有效。当价格四舍五入为 0 时出现问题(8,00 => 8,22 不更新)

最佳答案

当你这样做时:

o.price = "8,22"

您分配字符串对象,而不是十进制值。由于您使用逗号作为分隔符 '8,22'.to_f 返回 8.0

尝试分配一个数字。

o.price = 8.22 

关于ruby-on-rails - 比例部分更改时,Rails 十进制(货币)数不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21053257/

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