Ruby on rails Rails查询查找并更新大小数的位置
我需要更新数据库中amount属性为给定值的任何记录。“金额”属性保存为Ruby on rails Rails查询查找并更新大小数的位置,ruby-on-rails,ruby,bigdecimal,Ruby On Rails,Ruby,Bigdecimal,我需要更新数据库中amount属性为给定值的任何记录。“金额”属性保存为BigDecimal 具体来说,我更新金额的方法错误地将14.97存储为149700,将497存储为49700。所以我有一些正确的14.97值,一些149700值,还有一些497值和49700值 我需要找到BigDecimalamount属性在转换为float时为149700的所有记录,然后将这些记录更新为14.97,但将其存储为BigDecimal,并将其存储为49700到4.97 如果该值是浮点值,我可以使用: Foob
BigDecimal
具体来说,我更新金额的方法错误地将14.97存储为149700,将497存储为49700。所以我有一些正确的14.97值,一些149700值,还有一些497值和49700值
我需要找到BigDecimal
amount属性在转换为float时为149700的所有记录,然后将这些记录更新为14.97,但将其存储为BigDecimal
,并将其存储为49700到4.97
如果该值是浮点值,我可以使用:
Foobar.where(amount: 14.97)
但是,如何找到BigDecimal(:amount.)to_f==14.97
?可以用来搜索符合条件的记录。我同意:
BigDecimal
有一个方法,您可以执行以下操作:
users_to_update = User.all.select { |user| user.amount.is_a?(BigDecimal) && user.amount.to_f == 14.97 }
然后有一种方法用于Float
,因此您可以执行以下操作:
users_to_update.each { |user| user.update_attributes(amount: 14.97.to_d) }