2

我已经实现了money-rails gem 来启用Item模型的价格。

现在我string在 中创建一个新Item的之前用价格解析 a 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

4

1 回答 1

1

您可以覆盖Item模型中的属性编写器,甚至定义一个执行所有相关逻辑的新实例方法(作为虚拟属性)。例如:

models/item.rb

...
def price=(price)
  money = price.to_money
  self.price_cents = money.fractional
  self.price_currency = money.currency.iso_code
end
于 2014-05-15T12:33:29.347 回答