我目前使用:使用貨幣導軌:如何手動設置屬性的貨幣
- 錢護欄
v0.12.0
- 軌
v4.1.6
- 紅寶石
v2.1.3
使用情況
我'更新我用money-rails
移民助手(即add_money
)創建的稱爲dollars_per_month
的貨幣類型屬性。
所以,在我的模型,我有:
monetize :dollars_per_month_cents, allow_nil: true
而且我目前的模式有:
t.integer "dollars_per_month_cents"
t.string "dollars_per_month_currency", default: "CAD", null: false
貨幣的全局設置在配置/初始化:
config.default_currency = :cad
問題
我希望用戶能夠在文本字段中輸入「500美元」或「500」或「500 CAD」並正確保存。目前,指定一個非全球貨幣時,它拋出異常:
RuntimeError: Can't change readonly currency 'CAD' to 'USD' for field 'dollars_per_month'
這也在情理之中,我可以理解爲什麼這是自然強制執行。
但是,我想強制改變貨幣沒有關心這樣的強制執行,因爲這個領域僅僅是爲了捕捉問題的答案。
簡單的解決方案(儘管未來缺乏便利)是將其轉化爲純文本。然而,我想知道是否可以用RubyMoney和/或Money-rails來做到這一點,而不必觸摸應用程序的其餘部分。
注意
我試圖改變
dollars_per_month_currency
和保存模型,但是,dollars_per_month
仍然會返回一個基於CAD貨幣對象。我查看了金錢欄中的Instance貨幣readme。雖然我相信我可以做到這一點,但我覺得這是過度的,因爲它需要額外的貨幣領域..當我只想改變
dollars_per_month_currency
。
欣賞任何人都必須分享的見解或經驗!