ruby-on-rails - 在 Rails 中以美分存储价格

标签 ruby-on-rails activerecord currency stripe-payments

好的,我有一项 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/

相关文章:

sql - 如何解决选择框中的 N + 1 问题?

php - 如何将金额格式转换为印尼盾?

javascript - 无法在 Twitter Bootstrap 模式中渲染表单?

javascript - Chrome 扩展将数据发布到 Rails 服务器跨源 XMLHttpRequest

php - 使用 Active Record 进行 CodeIgniter 分页

ruby-on-rails - Rails 创造或更新魔法?

ruby-on-rails - Rails 应用程序崩溃并显示 #<ArgumentError : uncaught throw {:__recursive_key__=>true, 20687660=>true}>

javascript - Dart 包装 js 库并在 flutter 应用程序中使用它

javascript - Angular 中的货币格式化指令

ruby-on-rails - 将大型数据集导入数据库