我有一个System
类,其中包含一个名为price
的attr和一个Subsystem
类(belongs_to :system
)以及此price
attr。
问题出在我的模型中,因为我有两种不同的方式来处理system.price
1)系统至少有一个子系统(!system.subsystems.empty?
):我希望价格是所有子系统价格的总和。在这种情况下,我的模型有它的方法价格和一个循环来总结子系统的价格。
2)系统没有任何子系统(system.subsystems.empty?
):价格只是一个填写表格的输入字段。
我面临的问题是如何“选择”采用哪种方式......
任何人都可以帮助我吗?提前了很多!!!
答案 0 :(得分: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
答案 1 :(得分:0)
您只需覆盖模型中的price方法即可:
def price
if subsystems.empty?
self.attributes["price"]
else
subsystems.map(&:price).sum
end