Rails转换编辑表单上的百分比值
我的Customer
模型中有以下回调和方法。
before_save :convert_commission_percentage def convert_commission_percentage self.commission= commission.to_f/100.to_f end
这允许用户输入百分比为45
并将其存储为.45
。 但是,在编辑时,此百分比的字段在编辑表单上显示为.45
,导致该数字在更新时再次除以100。 有没有办法通过将编辑字段显示为45
来防止这种情况发生?
有几个选择:
-
为什么不存储转换后的值,为什么不存储用户输入而无需修改。
commission_percentage
可能是一个更好的名字。 如果您想在应用程序中使用commission
属性而不是commission_percentage
属性,可以使用alias_attribute :commission, :commission_percentage
commission
为commission_percentage
创建别名commission
。 -
使用
after_initialize
回调:before_save :convert_commission_percentage after_initialize do commission = commission.to_f * 100 end def convert_commission_percentage self.commission= commission.to_f/100.to_f end
-
通过getter和setter:
def commission=(value) write_attribute :commission, value.to_f/100 end def commision read_attribute(:commission).to_f * 100 end