cti*_*y79 1 ruby-on-rails ruby-on-rails-4
我的模型中有以下回调和方法Customer.
before_save :convert_commission_percentage
def convert_commission_percentage
self.commission= commission.to_f/100.to_f
end
Run Code Online (Sandbox Code Playgroud)
这允许用户输入百分比45并将其存储为.45.但是,在编辑时,此百分比的字段随后显示.45在编辑表单上,导致该数字在更新时再次除以100.有没有办法通过显示编辑字段来防止这种情况发生45?
有几个选择:
为什么不存储转换后的值,为什么不存储用户输入而无需修改. 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
Run Code Online (Sandbox Code Playgroud)通过getter和setter:
def commission=(value)
write_attribute :commission, value.to_f/100
end
def commision
read_attribute(:commission).to_f * 100
end
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1010 次 |
| 最近记录: |