加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 数据库,货币建模,本地化策略

发布时间:2020-12-17 02:17:27 所属栏目:百科 来源:网络整理
导读:在本地化货币环境中存储电子商务产品信息(即产品价格,当前价格)的最佳策略是什么? 我遇到了关于使用本地化,分隔符,精确数字等显示货币的issue in Spree,an e-commerce engine for Ruby on Rails. 但是,resolving the display of price became more complex,
在本地化货币环境中存储电子商务产品信息(即产品价格,当前价格)的最佳策略是什么?

我遇到了关于使用本地化,分隔符,精确数字等显示货币的issue in Spree,an e-commerce engine for Ruby on Rails.

但是,resolving the display of price became more complex,时我们必须弄清楚数据库中值的存储是否应该包括本地化分隔符/精度数字或者是否规范化.该解决方案涉及本地化值的显示以及可能标准化数据库中的存储值.但我不确定这是否是标准做法(擦洗数据以符合“标准”精度和分隔符或修改模型以采用“货币”字段,并保持输入标准.

案例分析:

如果来自美国的产品(使用“en”本地化文件)定价为2.99,则它以2.99的形式存储在数据库中.
如果网站更新为德国本地化(使用“de”本地化文件),则定价为2,99.
但是,该价格(和cost_price)值的更新是否应存储为2.99或2,99?如果它们以2.99存储并且值从模型返回到视图,则本地化将修改该值为2,99.

我不愿意在他们不知情的情况下标准化用户输入.标准化货币值是否正常,或者模型是否应该更改以处理多种货币格式?

需要注意的另一个问题是,尽管Spree引擎可以改变本地化,但我认为它还不能满足用户需求.所以从技术上来说,这不是一个“多种货币”的环境,我相信吗?我想选择一个可以扩展的选择.

相关问题:

> database design: accounts with multi currency
> Currency modeling in database

解决方法

问题是你有一种产品,以不同的文化交换不同的交换制度.比如说它在美国是1,450.00美元,在德国是1111,11欧元.有两个主要因素:

A.不同货币有不同的价格
B.在不同的文化中有不同的方式来显示金额

关于A,你可以

>以一种价格/货币存储,并随时调整到不同的汇率
>或每晚调整
>或者只是在不同国家有不同的价格

我会找一张按货币隔离的价格表.每晚更新可能是合理的:

ProductId  Currency  Price
1          EUR       1111.11
1          CAD       1436.65
1          USD       1450.00

这些值应该是数字,以便您可以在必要时轻松对其进行数学运算.在数据库中使用decimal(10,2)

关于B.

您应该在显示时将选定的价格格式化为给定的文化.想象一下美国人用欧元付款.他们想看到什么?您的输出将如下所示,具体取决于所选的文化:

说它是1,111.11欧元

Culture  Price    Long Name
de_de   1.111,11  (German)
fr_ca   1 111,11  (Quebec)
en_us   1,111.11  (US English)

它的数量相同,只是格式不同,具体取决于用户的喜好.

如果用户输入的金额不同,您还必须根据所选文化解析其值.查看Yii(对不起,PHP)L10N和I18N features.

笔记:

无论你做什么,都不要把它存放在漂浮物中,否则随着时间的推移你会得到微妙的错误.使用小数类型

对于作为计算结果的字段,请考虑在小数位后使用4位数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读