私は3レベルの階層モデル関係を持っています。すなわち、model1
はmodel2
に属し、model2
はmodel3
に属します。複数階層モデルを事前にロードできません
my_models = Repo.all(Model1)
|> Enum.map(fn (x) ->
Repo.preload(x, :model2)
end)
|> Enum.map(fn(x) -> # error "no function clause matching in Ecto.Repo.Preloader.preload/4"
Repo.preload(x.model2, :model3)
end)
エラーがある "Ecto.Repo.Preloader.preloadで機能なし句マッチング/ 4"
は、なぜあなたは 'Enum.map'にプリロードされていますか?それはプリロードの全目的を破っています。なぜRepo.all(Model1)|> Repo.preload(model2:[:model3]) '? – Dogbert
@Dogbertは、単一のエンティティでのみ作業をプリロードしませんか? – Kooooro
Nopeはリストにも同様に機能し、ネストされた関連付けを効率的に読み込むこともサポートしています。 – Dogbert