在 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_save
orafter_save
或类似的东西来执行折扣@product
。这样的事情可能会有所帮助:
def get_tags_and_discount
self.tags.each do |tag|
self.price = self.price - tag.discount
end
end