在Ruby on Rails(v4)中,我希望能够通过模型中的方法来降低价格。我Tags
的规则适用于product
。例如,如果product
有两个tags
,而另一个说要打折产品10美元而第二个规则说要打折产品3美元,我需要能够将产品的价格设置为两个规则中的较低者。
所以我的问题是:我可以使用自定义方法覆盖@product.price
方法,以便我首先应用Tag
规则吗?
答案 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