Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用money rails:如何手动设置属性';人民币_Ruby On Rails_Ruby_Money Rails - Fatal编程技术网

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
    并保存模型,但是,
    dollars\u per\u month
    仍然返回基于CAD的货币对象

  • 我已经研究了货币轨道中的实例货币。虽然我相信我可以做到这一点,但我觉得这太过分了,因为它需要额外的货币字段。。当我只想每月兑换
    美元\u货币时

感谢任何人分享的见解或经验

将选项与_model_currency一起使用:

monetize :dollars_per_month_cents, allow_nil: true, with_model_currency: :dollar_per_month_currency