Rails HABTM - 如何在模型中的关联方法上调用方法

时间:2011-12-27 01:02:43

标签: ruby-on-rails ruby ruby-on-rails-3

在我的Taletid模型中,我有:

def beregn_pakke(x)
@total_price << x.talei
end

def calculate_total(tal, sms)
  @total_price = []
  self.pakkes.each{|pakke| pakke.beregn_pakke(pakke)}
end

pakkes和taletids之间有一个HABTM。

问题在于:

self.pakkes.each{|pakke| pakke.beregn_pakke(pakke)}

我想为任何关联的pakke创建一个使用beregn_pakke(x)的循环。

但它要求在pakke模型中使用名为beregn_pakke的实例方法,这是我不想要的。它应该使用Taletid模型中的beregn_pakke(x)方法。

talei是我的pakkes表格中的一栏。

我希望能够使用Taletids模型中的beregn_pakke(x)方法。访问给定pakke的任何列。

如何在Taletid模型中使用beregn_pakke(x)方法来处理相关的pakkes?

1 个答案:

答案 0 :(得分:1)

def calculate_total(tal, sms)
  @total_price = []
  self.pakkes.each { |pakke| beregn_pakke(pakke) }
end

当您撰写pakke时,您在每个pakke.beregn_pakke(pakke) 上明确地将其命名为

那就是说,考虑像(未经测试的):

def calculate_total(tal, sms)
  @total_price = pakkes.collect { |p| p.talei }
end

或其中一个sum方法,它们将通过SQL完成工作。