我的Customer
模型中有以下回调和方法。
before_save :convert_commission_percentage
def convert_commission_percentage
self.commission= commission.to_f/100.to_f
end
这允许用户输入百分比45
并将其存储为.45
。但是,在编辑时,此百分比的字段随后会在编辑表单上显示为.45
,导致该数字在更新时再次除以100。有没有办法通过将编辑字段显示为45
?
答案 0 :(得分:5)
有几个选择:
为什么存储转换后的值,为什么不存储用户输入的内容而不进行修改。 commission_percentage
可能是一个更好的名字。如果您希望在应用中使用commission
属性而不是commission_percentage
属性,则可以使用alias_attribute :commission, :commission_percentage
为commission
创建别名commission_percentage
。
使用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