class ModelA
has_many :model_bs
end
class ModelB
belongs_to :model_a
has_many :model_cs
end
class ModelC
belongs_to :model_b
has_many :model_ds
end
class ModelD
belongs_to :model_c
end
model_a id hash
model_a_list = ModelA.all
model_a_ids_model_d_sizes = ModelD.joins(model_c: :model_b).group("model_bs.model_a_id").count
view
- model_a_list do | model_a |
= model_a_ids_model_d_sizes[model_a.id]
includes array
model_a_list = ModelA.includes(model_bs: { model_cs: :model_ds }).all
- model_a_list do | model_a |
= model_a.flat_map(&:model_bs).flat_map(&:model_cs).flat_map(&:model_ds).size