Рельсы длинноцепных модельных ассоциаций - PullRequest
0 голосов
/ 19 марта 2012

Хорошо, я знаю, как обрабатывать ассоциации от одной модели (назовите ее ModelA) через вторую (ModelB) с третьей (ModelC). Но что, если третий (ModelC) связан с пятым (ModelE) через 4-й (ModelD).

#ModelA 
has_many :model_bs
has_many :model_cs, :trough => :model_bs

#ModelC
has_many :model_ds
has_many :model_es, :trough => model_ds

Вопрос заключается в следующем: как получить коллекцию записей ModelE, связанных с конкретной записью ModelA через эту цепочку?

1 Ответ

2 голосов
/ 19 марта 2012

Вызов model_cs для экземпляра ModelA вернет массив model_cs.Если вы хотите получить доступ ко всем model_es, вам нужно будет выполнить итерацию по массиву model_cs и добавить эти результаты в массив или хеш.

array1 = @model_a.model_cs.all
array2 = []
array1.each do |x|
  array2 << x.model_es
end

array2 теперь содержит все model_es, чей конечный родитель - оригинал model_a.

...