Ruby on rails 使用money rails:如何手动设置属性';人民币
我目前正在使用:Ruby on rails 使用money rails:如何手动设置属性';人民币,ruby-on-rails,ruby,money-rails,Ruby On Rails,Ruby,Money Rails,我目前正在使用: 货币轨道v0.12.0 railsv4.1.6 rubyv2.1.3 用例 我正在更新一个名为dollars\u per\u month的货币类型属性,该属性是我用money rails迁移助手(即添加货币)创建的 因此,在我的模型中,我有: monetize :dollars_per_month_cents, allow_nil: true 我当前的模式有: t.integer "dollars_per_month_cents" t.string "dollars
- 货币轨道
v0.12.0
- rails
v4.1.6
- ruby
v2.1.3
dollars\u per\u month
的货币类型属性,该属性是我用money rails
迁移助手(即添加货币
)创建的
因此,在我的模型中,我有:
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.default_currency = :cad
问题
我希望用户能够在文本字段中输入“500美元”或“500”或“500 CAD”,并将其正确保存。当前,当指定非全局货币时,会引发异常:
RuntimeError: Can't change readonly currency 'CAD' to 'USD' for field 'dollars_per_month'
这是有道理的——我能理解为什么这是自然强制的
然而。。我想强制兑换货币,而不关心这些强制执行,因为这个字段只是用来获取问题的答案
简单的解决方案(尽管将来会缺乏便利性)是将其转换为纯文本。但是,我想知道是否可以在不接触应用程序其余部分的情况下使用RubyMoney和/或money rails来实现这一点
注释
- 我已经尝试过更改
并保存模型,但是,dollars\u per\u month\u currency
仍然返回基于CAD的货币对象dollars\u per\u month
- 我已经研究了货币轨道中的实例货币。虽然我相信我可以做到这一点,但我觉得这太过分了,因为它需要额外的货币字段。。当我只想每月兑换
美元\u货币时
monetize :dollars_per_month_cents, allow_nil: true, with_model_currency: :dollar_per_month_currency