[英]money-rails gem column naming conventions
我有一個具有unit_price
, discount_price
, final_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_penny
, price_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.