2011-11-20 35 views
6

我需要在我的Rails應用中使用一個百分比。在任何視圖中,包括用戶輸入時的格式都需要爲數百格式100.000。當它用於計算時,它需要以百分之一的格式表示,1.00000在Rails + MySQL中存儲一個百分比

我的遷移(我添加的列到現有的表)具有以下行:

add_column :worker, :cash_split, :decimal, :precision => 6, :scale => 5 

因此,截至目前,我將其存儲在百分之一(1.00000)格式。我選擇以這種格式存儲它的基礎是,當我需要進行乘法運算時,我認爲這將意味着更乾淨的業務邏輯(即沒有0​​代碼掛起)。

我唯一的想法可能是濫用composed_of方法。我可以將數據以數百(100.000)格式存儲爲cash_split,然後創建一個屬性訪問器cash_split_percentage,它的1.0000格式副本返回cash_split

回答

5

你的第一個想法是正確的......不要過時。

您應該百分之一百地存儲數據庫中的百分比數字。在所有的Ruby計算中使用該格式。

百分比數字是顯示約定。例如,號碼 0.45顯示爲45%。因此,使用視圖幫助器將您的百分比數字從其內部格式(十進制數字)轉換爲您選擇的顯示格式 - 包含%符號的字符串。

+2

你將如何處理表格中的百分比?用戶需要輸入45%,但應該保存爲0.45。儘管如此,如果用戶輸入其他域錯誤並且表單被重新渲染,百分比字段應該有45而不是0.45。有了這個我想說,回調可能不是最終的解決方案。 –

+0

您可以爲數百種格式的百分比編寫getter和setter。所以你將擁有#some_ratio屬性和#some_ration_percentage&#some_ration_percentage =這些屬性,它們只會分割/乘以100,然後繼續前進。 – Emirikol