如何在Rails应用程序中存储用户首选的货币格式?

时间:2013-08-10 09:49:47

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我希望我的国际多语言Rails应用的用户能够设置自己的货币和货币格式。

现在,我正在使用翻译文件来实现这一目标:

de:    

  currency:
    format:
      format: "%n %u"
      unit: "€"
      separator: ","
      delimiter: "."

但是,这还不够灵活。例如如果用户想要使用欧元但希望{<1}}符号在之前显示

那么存储用户的货币格式首选项然后在整个应用程序中使用它的最佳方法是什么?

我想将用户的偏好存储在数据库中,如下所示:

然后,在视图中:

user.preferences.format = "%n %u"
user.preferences.unit = "€"
user.preferences.separator = ","
user.preferences.delimiter = "."
user.preferences.save

这是常见的Rails练习吗?什么是更好的方法?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您已经更好地使用个人的偏好/设置而不是应用设置。

但是你的新安排仍然存在问题。

如果用户想要更改他的货币,比如从欧元到加拿大元怎么办?这在你的应用程序中并不那么容易,因为他目前的金额是欧元。您需要将此金额转换为Can Dollar并考虑货币汇率,这会增加复杂性。而金额将不一致。例如,如果他想在几天之后改回欧元,很可能会达到新的欧元金额。

我的建议:

  1. 为所有内容使用一致的金额和货币。假设价格总是19美元。当然,用户可以拥有自己的货币,但它将从美元的基本金额转换。

  2. 对自定义货币使用单独的设置并将其保存到db。你已经做到了。并且有一个非常好的宝石可以有效地做到:https://github.com/ledermann/rails-settings