0

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

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

4

2 回答 2

1

当然。由于价格是一个属性(我假设),您总是可以在Product类中重新定义价格。

一个例子:

def price
  calculate_discount
end

然后在calculate_discount

def calculate_discount
  old_price = read_attribute(:price)
  # apply your rules here
end
于 2013-08-26T02:03:00.760 回答
0

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

def get_tags_and_discount
  self.tags.each do |tag|
    self.price = self.price - tag.discount
  end
end
于 2013-08-26T02:06:40.990 回答