我已经实施了money-rails gem来支持Item
模式的价格。
现在我在string
中创建新的Item
之前解析价格items_controller.rb
,如下所示:
@item = Item.find_or_create_by_link!(params[:item][:link]) do |c|
c.assign_attributes(params[:item])
c.price = params[:item][:price].to_money unless params[:item][:price].nil?
end
然而,我想知道是否有更多正确的'在将字符串保存到模型之前自动解析字符串的方法。我正在尝试before_save
过滤器但无法使其正常工作。
价格存储在Item
模型中的两列,price_cents
和price_currency
。
答案 0 :(得分:1)
您可以覆盖Item
模型中的属性writer,甚至可以定义执行所有相关逻辑的新实例方法(作为虚拟属性)。例如:
models/item.rb
...
def price=(price)
money = price.to_money
self.price_cents = money.fractional
self.price_currency = money.currency.iso_code
end