ruby-on-rails - ruby rails : A way to save currency into a column within a database-table

标签 ruby-on-rails ruby database rails-activerecord currency

我有一个包含金额和货币列的数据库表成本。我正在寻找将货币保存到此列中的解决方案。

您有什么建议:货币列的数据类型是什么,我应该在那里保存什么值(iso 代码、货币符号……)?或者也许像在 java 中一样,ruby 中已经有一个数据类型 Currency?

最佳答案

这里是所有 Rails 4(ActiveRecord 迁移)数据类型:

  • :二进制
  • : bool 值
  • :日期
  • :日期时间
  • :十进制
  • : float
  • :整数
  • :primary_key
  • :引用
  • :字符串
  • :文本
  • :时间
  • :时间戳

来源:Rails 4: List of available datatypes

如您所见,没有数据类型货币。我建议您为金额创建一个小数列,为货币创建一个整数。

为什么是整数?好吧,因为您可以像这样在模型中为该列设置一个枚举:

enum currency: [:dollar]

这将创建一个与枚举同名的方法,假设您有一个成本变量:

cost.dollar?

这将根据值返回 true 或 false。

此外,您还可以轻松地创建一些案例,以您喜欢的货币进行所有更改:

case cost.currency
when Cost.currencies[:dollar]
  # Do something
end

始终将此列与 Cost.currencies[:symbol_of_currency] 而不是数字进行比较(枚举就像 C 一样工作,0 将是第一个元素),这将允许您更改枚举中元素的顺序或添加无需更改应用功能的新功能。

此外,这允许您像这样在数据库中创建行:

Cost.create(currency: :dollar, amount: 30.0, ...)

关于ruby-on-rails - ruby rails : A way to save currency into a column within a database-table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34694205/

相关文章:

ruby-on-rails - 无法在 Windows 上安装 ruby​​-debug gem

ruby-on-rails - 创建动态集合选择rails 3.1

ruby-on-rails - Ruby:为什么 'and not' 有效而 '&& !(expr)' 无效?

ruby-on-rails - 无法批量分配 protected 属性 : user

ruby-on-rails - 如何使用 Ruby 在日历中显示事件?

ruby-on-rails - 在 Rails 6 和 Puma 上仍然需要工作启动时建立连接吗?

ruby - 在简短示例中发出调用方法

MySQL errno 150 尚未解决

mysql - 是否可以创建一个 hh :mm time column? 的表

database - 如何在数据库架构中支持多语言方法?