好的,我有一项 Stripe 费用,我正在对其征税。 Stripe 将数字视为美分,因此它会给您留下像 10015 这样的数字,而不是 100.15。
在我的 Controller 中,我将号码发送到 ActiveRecord 作为 10015/100.0
当我检索它时,它给了我 #<BigDecimal:7fca81f71130,'0.1243E3',18(27)>>
发生什么事了?
我试过了
rails g migration add_expense_to_user expense:integer
和
rails g migration add_expense_to_user expense:decimal
我添加了其迁移
add_column :user, :expense, :decimal, precision: 6, scale: 2
这是当前设置。
如果该值存储为 10015/100,我如何存储/检索该值
最佳答案
BigDecimal
只是 Rails 在数据库中用于 decimal
类型的类型。 0.1243E3
是科学记数法,是 0.1243 x 10³
的缩写 - 即。 124.3
您可以通过使用 Ruby 中的 .to_f
方法从中获取常规 float ,也可以将 BigDecimal
传递给其他 Rails 帮助程序,例如 number_to_currency(the_big_decimal)
将产生 "$124.30"
因此,换句话说,有了 BigDecimal,您可能已经有了您在这个问题中所要求的内容。
关于ruby-on-rails - 在 Rails 中以美分存储价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618408/