2

我正在开发一个包含结帐篮的 Rails 应用程序,需要一些基本帮助。

我正在努力整合某些产品定价所需的逻辑论据。如果购物车中添加了五个或更多产品,我想做的是降低产品的价格。

我目前有具有典型关联的产品、line_items、购物车和订单的模型和控制器。

我确信if and elseif我可以在方法中定义一个简单的语句,但我很想知道其他人将如何将其作为最佳实践来实现?

在此先感谢您的帮助!艾丽

4

1 回答 1

1

我不确定您何时使用 aCartOrder. 假设您主要工作在CartLineItems. 在某些时候,我猜,Cart当用户输入他们的信用卡号码时,就会变成一个订单。

  1. 首先我会说Lineitem应该有一个discounted字段。所以LineItem不一定存储折扣价;你让OrderorCart类确定它的实际最终价格。

  2. 第二次使用和关联回调以在订单项添加到订单时自动应用折扣。

    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
    
于 2012-10-31T01:19:21.137 回答