如何在从模型返回之前修改价格?

时间:2013-08-26 01:55:11

标签: ruby-on-rails model ruby-on-rails-4

在Ruby on Rails(v4)中,我希望能够通过模型中的方法来降低价格。我Tags的规则适用于product。例如,如果product有两个tags,而另一个说要打折产品10美元而第二个规则说要打折产品3美元,我需要能够将产品的价格设置为两个规则中的较低者。

所以我的问题是:我可以使用自定义方法覆盖@product.price方法,以便我首先应用Tag规则吗?

2 个答案:

答案 0 :(得分:1)

不确定。由于价格是一个属性(我假设),您可以随时在Product类中重新定义价格。

一个例子:

def price
  calculate_discount
end

然后在calculate_discount

def calculate_discount
  old_price = read_attribute(:price)
  # apply your rules here
end

答案 1 :(得分:0)

你绝对可以。保存before_save后,您可以使用after_save@product或类似内容来执行折扣。这样的事情可能会有所帮助:

def get_tags_and_discount
  self.tags.each do |tag|
    self.price = self.price - tag.discount
  end
end