2017-07-31 66 views
0

我是相當新的軌道,並具有我敢肯定,問題是不是唯一的,但似乎無法找到一個很好的解決方案,以我自己的:手柄小數的Rails

我有一個具有:tax_rate十進制屬性的模型,該模型用於稍後在模型中使用某些乘法創建總計。

如果用戶在稅率字段中輸入稅率爲'0.09',那麼這很有效,但當用戶輸入'9'時顯然會產生大量的金額。

我正在尋找創建一些代碼,將處理一個整數進入我的表單。

我的形式:

<td><%= f.input :tax_rate, label: false, input_html: { class: 'taxtarget', precision: 2 }%></td> 

在模型中的calcualtions:

before_save :persist_calculations 

validates_presence_of :price, :units 

def calculated_total 
    price * units + calculated_tax 
end 

def calculated_tax 
    if self.tax_rate.present? 
     self.price * self.tax_rate 
    else 
     self.price 
    end 
end 

def persist_calculations 
    self.total = calculated_total 
    self.tax_amount = calculated_tax 
end 

我想通過防止整數(要求小數點),以任一處理整個號碼或通過給它添加兩位小數將整數轉換爲小數。

任何人有任何好的資源或想法如何實現這一目標?

回答

0

無論是驗證添加到您的模型TAX_RATE,使其不能成爲大於1.0:

validates :tax_rate, less_than: 1.0 

和/或添加before_validation到模型,大量轉換成小的:

before_validation ->(obj) { 
    obj.tax_rate = obj.tax_rate/100 if obj.tax_rate > 1 
} 

和/或處理它的控制器,這通常比使用回調更好。