首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >money-rails宝石列命名约定

money-rails宝石列命名约定
EN

Stack Overflow用户
提问于 2017-12-13 17:21:17
回答 1查看 1.1K关注 0票数 1

我有一个Order模型,有unit_pricediscount_pricefinal_price等。所有这些都是integer db中的postgres字段。当前,它的舍入值等于下一个整数,并保存该整数。但现在我发现,这不是一个好的方法,因为它可能会导致一些错误/问题在未来。因此,我计划通过to (USD*100)节省金钱价值,但当用英镑显示它时,我会写一些助手。

但是我现在找到了这个宝石,金钱-铁路,它可以做我想做的事。我正试图把我的头绕在这块宝石上,但我真的想不出这里使用的一些惯例,也不确定它是否适合我的目的。

我的默认货币是GBP

我可以看到,在默认情况下,这个创业板使用约定_cents

代码语言:javascript
复制
monetize :price_cents #from docs

以上假设为db列price_cents。在这里,我们为什么要使用美分作为静态列?那目的是什么?除了露骨外,这里还有其他用途吗?

如果它是为了像cents那样的目的,它会自动寻找USD,如果penny寻找GBP &soforth.然后,对于我们的应用程序支持的每一种货币,我们将支持创建新的db列,如price_pennyprice_cent等。如果有很多货币的话,这就没那么好了。或者,我可以在这里使用像price_smallest这样的通用名称,并使用这个名称,而不管can类型如何?也是

我搞不清楚这里的确切用途。有人能解释一下这个话题吗?

注意:我的应用程序现在没有支持其他货币的计划。但将来还可以加进去。很高兴现在考虑一下我想..。

EN

回答 1

Stack Overflow用户

发布于 2017-12-13 18:28:13

因此,您需要从表订单中删除列unit_price、discount_price、final_price。并使用add_monetize正确地将它们添加回。

创建一个新的迁移文件,如下所示:

代码语言:javascript
复制
class FixPricesInOrders < ActiveRecord::Migration[5.0]
  def change
    # Remove Columns
    remove_column :orders, :unit_price
    remove_column :orders, :discount_price
    remove_column :orders, :final_price
    # Add money
    add_monetize :orders, :unit_price
    add_monetize :orders, :discount_price
    add_monetize :orders, :final_price
  end
end

来自https://github.com/RubyMoney/money-rails

“由于在Rails 4.2中为PostgreSQL添加了money列类型,您需要使用add_monetize而不是add_money列。”

然后确保将以下内容添加到app/models/order.rb

代码语言:javascript
复制
monetize :unit_price
monetize :discount_price
monetize :final_price
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47798894

复制
相关文章

相似问题

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