我正在开发一个包含结帐篮子的rails应用程序,我需要一些基本的帮助。
我正在努力整合某些产品定价所需的逻辑参数。如果有五个或更多产品添加到购物车,我想做的是降低产品的价格。
我目前拥有产品,line_items,购物车和订单的模型和控制器以及典型的关联。
我确信我可以在一个方法中定义一个简单的if and elseif
语句,但我很想知道其他人如何将其作为最佳实践来实现?
提前感谢您的帮助!艾丽
答案 0 :(得分:1)
我不确定您何时使用Cart
与Order
。假设您主要在Cart
工作,与LineItems
有多对多的关系。在某些时候,我猜,Cart
会在用户输入信用卡号时成为订单。
首先我要说Lineitem
应该有一个discounted
字段。所以LineItem
并不一定存储折扣价;您让Order
或Cart
类确定它的实际最终价格。
第二次使用和关联回调,以便在订单项添加到订单时自动应用折扣。
class Cart
has_many :line_items,
after_add: :calculate_volume_discount,
after_remove: :calculate_volume_discount
# When a line item is added or removed determine if current items
# are entitled to a discount
def calculate_volume_discount line_item
current_count = line_items.count
line_items.each do |li|
li.discounted = (current_count >= 5)
li.save
end
end
end