如何访问不仅与另一个对象相关联的对象集合,还有其他对象的集合?

时间:2011-02-10 03:37:29

标签: ruby-on-rails model associations

我有两个模型,观察和分数,其中分数属于观察,观察有很多分数。

我可以使用Observation.first.scores来检索属于第一次观察的分数集合。

我希望能够做的是在任意观察集合上调用.scores,例如@ observation.scores,并获得与所有这些观察相关的所有分数的集合。

我想我可以使用这样的东西......     all_scores = Array.new     @ observation.each做|观察|       observe.scores.each做|得分|         all_scores.push得分       结束     端

但是

2 个答案:

答案 0 :(得分:0)

这样的事可能有用:

Score.find(:all, :conditions => ["observation_id in (?)", @observations.collect(&:id)])

这会在@observations数组中找到所有得分。

答案 1 :(得分:0)

您可以使用Array#map

@observations = Observation.all(:include => :scores)
# => [#<Observation>, #<Observation>...]

@all_scores = @observations.map { |o| o.scores } 
# => [[#<Score>, #<Score>], [#<Score>, #<Score>, #<Score>]...]

这将为您提供一组数组。