首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用money-rails:如何手动设置属性的货币

使用money-rails:如何手动设置属性的货币
EN

Stack Overflow用户
提问于 2014-09-23 16:41:50
回答 1查看 2.4K关注 0票数 5

我目前正在使用:

  • 货币-rails v0.12.0
  • rails v4.1.6
  • 红宝石v2.1.3

用例

我正在更新一个名为dollars_per_month的money类型属性,它是我用money-rails迁移助手(即add_money)创建的。

所以,在我的模型里:

代码语言:javascript
复制
monetize :dollars_per_month_cents, allow_nil: true

我的当前模式有:

代码语言:javascript
复制
t.integer  "dollars_per_month_cents"
t.string   "dollars_per_month_currency", default: "CAD", null: false

在配置/初始化器中全局设置货币:

代码语言:javascript
复制
config.default_currency = :cad

问题

我希望用户能够在文本字段中输入"500美元“或"500”或"500 CAD“,并使其正确保存。当前,当指定非全局货币时,它抛出异常:

代码语言:javascript
复制
RuntimeError: Can't change readonly currency 'CAD' to 'USD' for field 'dollars_per_month'

这是有道理的-我能理解为什么这是自然执行的。

但是..。我想强行改变货币而不关心这样的强制执行,因为这个领域只是为了抓住一个问题的答案。

简单的解决方案(尽管未来缺乏方便)是将其转化为纯文本。然而,我想知道是否可以用RubyMoney和/或money-rails来完成这一任务,而无需触及应用程序的其余部分。

Notes

  • 我尝试过更改dollars_per_month_currency并保存模型,但是dollars_per_month仍然返回一个基于CAD的Money对象。
  • 我已经研究过货币-rails readme中的货币。虽然我相信我能做到这一点,但我觉得这太过分了,因为它需要额外的货币字段。当我只想改变dollars_per_month_currency

欣赏任何人必须分享的任何见解或经验!

EN

回答 1

Stack Overflow用户

发布于 2014-10-29 13:16:52

使用选项with_model_currency

代码语言:javascript
复制
monetize :dollars_per_month_cents, allow_nil: true, with_model_currency: :dollar_per_month_currency
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26000377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档