Rails将德国价格保存到数据库

时间:2012-12-19 04:21:57

标签: ruby-on-rails model currency

我想将这个“199,99”的价格保存为数据库中的浮点数或小数。

我试图用“。”替换“,”。在具有前过滤器的模型中。

但是价格会以“199.00”传递给之前的过滤器。

有没有办法在模型类中转换它? 我知道如何在控制器中执行此操作,但我如何在模型中执行此操作?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为正确的方法是保持db值不变,并在视图层中创建一个帮助方法,以显示具有首选格式的金额

所以基本的想法是,在你的应用程序助手

module ApplicationHelper
   #p for price, just to keep things simple
   def p(amount)
     amount.gsub(".",",")
   end
end

并在您的视图中

<%= p(object.price) %>

并且您的方法的另一个缺点是,如果您将价格保存为123,34,您将无法在以后进行任何计算。

HTH

答案 1 :(得分:0)

您应该使用number_to_currency帮助程序和适当的语言环境

或者,如果您不想明确地混淆locales声明分隔符。

number_to_currency(value_from_db, :unit => "$;", :separator => ".", :delimiter => " ", :format => "%u %n")