2013-08-30 31 views
0

我有一個System類與attr所謂priceSubsystem類(belongs_to :system)與此price attr。屬性與多個處理(導軌)

的問題是在我的模型,因爲我有治療system.price

1)系統的兩種不同的方法已經至少一個子系統(!system.subsystems.empty?):我想價格是所有的總和它的子系統價格。在這種情況下,我的模型具有方法價格,並帶有一個循環來總計子系統價格。

2)該系統沒有任何子系統(system.subsystems.empty?):價格只是一個輸入字段,它填充在表單中。

我面對的問題是如何「選擇」遵循哪種方式...

誰能幫助我?提前很多!!!

回答

0

您可以簡單地覆蓋了價格法的模型:

def price 
    if subsystems.empty? 
    self.attributes["price"] 
    else 
    subsystems.map(&:price).sum 
end 
1

你總是可以只存儲系統的價格在其他地方,並選擇使用它在必要時:

class System 

    has_many :subsystems 

    def price 
    subsystems.empty? system_price : subsystems.sum('price') 
    end 

    def system_price 
    # maybe an active record attribute, this method might not exist 
    25.00 
    end 

end