2012-10-30 20 views
2

我正在開發一款包含結帳籃的rails應用程序,並且需要一些基本的幫助。籃子IF參數ROR

我正在努力整合某些產品定價所需的邏輯論證。如果有五種或更多產品添加到購物車中,我想要降低產品的價格。

我目前擁有產品,line_items,購物車和具有典型關聯的訂單的模型和控制器。

我確定有一個簡單的if and elseif聲明,我可以在一個方法中定義,但是我很想知道其他人會如何將其作爲最佳實踐實現?

在此先感謝您的幫助! Elle

回答

1

我不確定何時使用Cart而不使用Order。我們假設你主要在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