如何在 rails 控制台内将"to_f"应用于活动记录查询中所有结果的列



我有这个查询:p = Payment.where(:client_id => 1)

然后只有一些字段,所以我执行这个:p.select(:id, :created_at, :amount)

问题是结果中的每个金额都以 BigDecimal 的形式出现,并且不可读。我需要在 rails 控制台中应用to_f函数以获得一组可读的结果。

我试过map,像这样:p.map {|p| p.amount.to_f}但它只向我返回一个包含数量的数组,我需要它与其他属性一起返回。

你可以这样尝试,

p.map { |item| { id: item.id, created_at: item.created_at, amount: item.amount.to_f}}

要解决您的问题并获取所有字段:

p.map { |i| [i.id, i.created_at, i.amount.to_f] }

你也可以看看这篇文章。也许您只需要数据库中amount字段的浮点型

如果你总是想要float的金额,你可以设置回调after_find

class Payment < ActiveRecord::Base
after_find do |payment|
self.amount = self.amount.to_f
end
end

当您找到对象时,它将始终为您提供浮点值

  • 它不会更新数据库中的值。

请查看此 Rails 回调

最新更新