Rails:更改params中属性的值

我有一个输入( price )的表单,用户填写的值如: 12,50110,90 (法国价格)。

所以在控制器中我做: @quote = current_user.company.quotes.build!(params[:quote])

问题是rails使用US方式的小数表示行为。 因此它以12.00111.90的价格保存报价

那么如何告诉rails实际考虑欧洲版的小数?

谢谢。

UPDATE

解决方案是将此方法添加到Quote模型中。

 def price=(data) write_attribute(:price, data.to_s.gsub(',', '.')) end 

这将取代,. 。 感谢Olivier提示。

因为你实际上在处理十进制数转换为十进制12,50 – > 12.5之前存储它,你可以轻松地对它执行任何算术。

它将是params中的一个字符串,因此您可以使用sub来替换。 您可以通过覆盖setter price=方法在模型中执行此操作。

显示时,在视图中将其转换为12,50。