Ruby on rails Rails查询查找并更新大小数的位置

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

我需要更新数据库中amount属性为给定值的任何记录。“金额”属性保存为
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) }