2013-08-30 30 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