我正在制作一个简单的零售商务解决方案,其中有几种不同型号的价格。这些价格构成了总价格。想象一下为您的酸奶选择浇头多付 0.30 美元。
当我将price
字段设置为
t.decimal :price, precision:8, scale:2
数据库存储6.50
为6.5
. 我知道在标准 rails 方式中,您调用number_to_currency(price)
以获取视图中的格式化值。我需要以编程方式调用该price
字段以及格式化字符串,即 $6.50 一些不直接属于视图的地方。此外,我的需求很简单(没有货币转换等),我更喜欢在模型中对价格进行通用格式化,而无需在视图中重复调用 number_to_currency。
有没有一种好方法可以修改我的 getter 价格,使其始终返回带美元符号的小数点后两位,即调用时 6.50 美元?
提前致谢。
更新
谢谢大家。
我选择使用 Alex 的方法,因为仅仅为了格式化数字而进行包含似乎非常“骇人听闻”。使用他的方法,我做了:
def price_change=(val)
write_attribute :price_change, val.to_s.gsub(/[\$]/,'').to_d
end
def price_change
"$%.2f" % self[:price_change]
end
干杯。
更新 2
买者自负。一旦你这样做了,你就失去了对数字进行操作的能力,因为它现在是一个字符串。
请注意是否有人面临与我相同的问题。