我有这个查询: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 回调