2011-02-10 106 views
0

我有两个模型,观察和分数,其中分数属于观察,观察有很多分数。如何访问不仅与另一个对象关联的对象集合,还访问其他对象集合关联的对象集合?

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

我想要做的就是在任意一个观测集合(例如@ observations.scores)上调用.scores,并获取与所有这些观测相关的所有分数的集合。

我想我可以用这样的东西... all_scores = Array.new @ views.each do | observation | observation.scores.each do | score | all_scores.push得分 结束 结束

但日

回答

0

你可以使用使用Array#map

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

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

这会给你一个数组的数组。

+0

美丽,谢谢。两个电话,正是我所需要的。 – Andrew 2011-02-10 04:49:29

0

像这样的东西可能会奏效:

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

这将找到的@observations数组中的观察所有得分。