我有这个查询:
p = Payment.where(:client_id => 1)
然后只有一些字段,因此我执行此命令:
p.select(:id, :created_at, :amount)
问题在于结果中的每个金额都以BigDecimal的形式出现,并且不可读。我需要在Rails控制台中应用to_f
函数,以获取一组可读的结果。
我尝试了map
,如下所示:
p.map {|p| p.amount.to_f}
但是它只返回给我一个带有数量的数组,我需要它与其他属性一起出现。
答案 0 :(得分:1)
为解决您的问题并获取所有字段:
p.map { |i| [i.id, i.created_at, i.amount.to_f] }
您还可以查看此article。也许您只需要数据库中amount
字段的浮点类型
答案 1 :(得分:1)
您可以尝试这样
p.map { |item| { id: item.id, created_at: item.created_at, amount: item.amount.to_f}}
答案 2 :(得分:0)
如果您始终想要float
的金额,则可以设置回调after_find
class Payment < ActiveRecord::Base
after_find do |payment|
self.amount = self.amount.to_f
end
end
当找到对象时,它将始终为您提供浮点值
请查看此Rails Callback