我目前正在使用:
- 钱轨
v0.12.0
- 导轨
v4.1.6
- 红宝石
v2.1.3
用例
我正在更新一个名为 的货币类型属性dollars_per_month
,它是我使用money-rails
迁移助手(即add_money
)创建的。
所以,在我的模型中,我有:
monetize :dollars_per_month_cents, allow_nil: true
我当前的架构有:
t.integer "dollars_per_month_cents"
t.string "dollars_per_month_currency", default: "CAD", null: false
货币在 config/initializers 中全局设置:
config.default_currency = :cad
问题
我希望用户能够在文本字段中输入“500 美元”或“500”或“500 加元”,并正确保存。目前,当指定非全局货币时,它会抛出异常:
RuntimeError: Can't change readonly currency 'CAD' to 'USD' for field 'dollars_per_month'
这是有道理的——我可以理解为什么这是自然执行的。
但是.. 我想强行更改货币而不关心此类强制执行,因为该字段仅用于获取问题的答案。
简单的解决方案(尽管未来缺乏便利)是将其转换为纯文本。但是,我想知道是否可以在不触及应用程序其余部分的情况下使用 RubyMoney 和/或 Money-rails 来做到这一点。
笔记
我已经尝试更改
dollars_per_month_currency
和保存模型,但是,dollars_per_month
仍然返回基于 CAD 的 Money 对象。我在 money-rails自述文件中查看了实例货币。虽然我相信我可以完成这项工作,但我觉得这太过分了,因为它需要额外的货币字段......当我只想改变时
dollars_per_month_currency
。
感谢任何人必须分享的任何见解或经验!