При сериализации экземпляра объекта в при помощи .as_json один из атрибутов типа BigDecimal(8,2) сериализуется без нуля, т.е. так:
> BigDecimal.new("1.20").as_json
=> "1.2"
Т.е. отсутствует конечная цифра 0 в цене.
Пробный код на примере Struct:
Price = Struct.new(:product, :money)
obj = Price.new 'квас', BigDecimal.new("1.20")
puts obj.to_json
=> {"product":"квас","money":"1.2"}
Каким образом можно переопределить BigDecimal.as_json, чтобы сумма форматировалась как nnn.nn?
Мне нужно так отформатировать:
'%.2f' % BigDecimal.new("1.20")
Только мне нужно переопределить локально, в пределах одной модели ActiveRecord, а не глобально.
Rails 4.2, Ruby 2.3, gem json 1.8.3