簡體   English   中英

money-rails gem列命名約定

[英]money-rails gem column naming conventions

我有一個具有unit_pricediscount_pricefinal_price等的Order模型。所有都是postgres db中的integer字段。 當前將其舍入到下一個整數並將其保存。 但是現在我發現這不是一個好方法,因為將來可能會導致一些錯誤/問題。 因此,我計划通過執行( USD*100 )節省一分錢的貨幣值,但是在顯示時通過編寫一些幫助程序將其顯示為GBP。

但我現在發現這個寶石貨幣軌可能做我想做的。 我試圖把頭纏在這顆寶石上,但我真的無法弄清楚這里使用的一些約定,也不確定它是否適合我的目的

我的默認貨幣是GBP

我可以看到該gem默認使用約定_cents

monetize :price_cents #from docs

上面假設一個db列price_cents 在這里,為什么要使用美分作為靜態列? 目的是什么? 除了在此明確使用以外,還有其他用途嗎?

如果它的目的是像cents一樣,它會自動尋找USD ,如果一分錢會尋找GBP &soforth ...那么對於我們的應用程序支持的每種貨幣,我們最終都會創建新的db列,例如price_pennyprice_cent等。如果有很多貨幣。 還是我可以在這里使用通用名稱,例如price_smallest,並使用該名稱而不管當前的類型如何?

我不能在這里正確找出確切的用例。 有人可以闡明這個話題嗎?

注意:我的應用目前沒有支持其他貨幣的計划。 但是可以在將來添加。 我認為現在考慮到這一點真是太好了。

因此,您需要從表訂單中刪除unit_price,Discount_price,final_price列。 並使用add_monetize將它們正確添加回去。

創建一個新的遷移文件,如下所示:

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

monetize :unit_price
monetize :discount_price
monetize :final_price

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM