2011-02-10 91 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數組中的觀察所有得分。