Как я могу получить доступ к коллекции объектов, связанных не только с одним другим объектом, но и с коллекцией других объектов? - PullRequest
0 голосов
/ 10 февраля 2011

У меня есть две модели, Наблюдение и Оценка, где оценки принадлежат наблюдению, а наблюдение имеет много оценок.

Я могу использовать Observation.first.scores, чтобы получить коллекцию оценок, принадлежащих первому наблюдению.

То, что я хотел бы сделать, это вызвать .scores для произвольной коллекции наблюдений, что-то вроде @ наблюдения.scores, и получить коллекцию всех оценок, связанных со всеми этими наблюдениями.

Полагаю, я мог бы использовать что-то вроде этого ... all_scores = Array.new @ наблюдения.each do | наблюдение |наблюдение.scores.each делать | оценка |all_scores.push конец счета конец

но

Ответы [ 2 ]

0 голосов
/ 10 февраля 2011

Вы можете использовать команду Array#map:

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

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

Это даст вам массив массивов.

0 голосов
/ 10 февраля 2011

Что-то вроде этого может работать:

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

Это найдет все оценки с наблюдением в массиве @observations.

...