在 Ruby on Rails (v4) 中,我希望能够通过模型中的方法打折价格。我有Tags适用于product. 例如,如果 aproduct有两个tags,一个说给产品打折 10 美元,第二条规则说给产品打折 3 美元,我需要能够将产品的价格设置为两条规则中的较低值。
所以我的问题是:我可以使用允许我首先应用我的规则@product.price的自定义方法覆盖该方法吗?Tag
在 Ruby on Rails (v4) 中,我希望能够通过模型中的方法打折价格。我有Tags适用于product. 例如,如果 aproduct有两个tags,一个说给产品打折 10 美元,第二条规则说给产品打折 3 美元,我需要能够将产品的价格设置为两条规则中的较低值。
所以我的问题是:我可以使用允许我首先应用我的规则@product.price的自定义方法覆盖该方法吗?Tag
当然。由于价格是一个属性(我假设),您总是可以在Product类中重新定义价格。
一个例子:
def price
calculate_discount
end
然后在calculate_discount:
def calculate_discount
old_price = read_attribute(:price)
# apply your rules here
end
你绝对可以。保存后,您可以使用before_saveorafter_save或类似的东西来执行折扣@product。这样的事情可能会有所帮助:
def get_tags_and_discount
self.tags.each do |tag|
self.price = self.price - tag.discount
end
end