篮子IF参数ROR

时间:2012-10-30 16:18:23

标签: ruby-on-rails ruby-on-rails-3 if-statement checkout

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

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

我目前拥有产品,line_items,购物车和订单的模型和控制器以及典型的关联。

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

提前感谢您的帮助!艾丽

1 个答案:

答案 0 :(得分:1)

我不确定您何时使用CartOrder。假设您主要在Cart工作,与LineItems有多对多的关系。在某些时候,我猜,Cart会在用户输入信用卡号时成为订单。

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

  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