gpt4 book ai didi

ruby-on-rails - 使用货币 rails : How to manually set an attribute's currency

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:26 24 4
gpt4 key购买 nike

我目前正在使用:

  • 金钱 rails v0.12.0
  • rails v4.1.6
  • ruby 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 USD”或“500”或“500 CAD”,并正确保存。目前,当指定非全局货币时,它会抛出异常:

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 的货币对象。

  • 我研究了货币栏中的实例货币 readme .虽然我相信我可以完成这项工作,但我觉得这太过分了,因为它需要额外的货币字段……当我只想更改 dollars_per_month_currency 时。

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

最佳答案

使用选项with_model_currency:

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

关于ruby-on-rails - 使用货币 rails : How to manually set an attribute's currency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26000377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com