预加载模型架构

Pre-loading Model Schema

所以我在下面列出了架构及其关联。

用户

头像

post

评论

我的问题是我正在尝试加入我的 post -> 评论 -> user -> avatar in a query.

def get_post_comments!(id) do
query =
  from(
    p in Post,
    where: p.id == ^id,
    select: p,
    join: c in assoc(p, :comments),
    join: l in assoc(c, :user),
    join: d in assoc(l, :avatar),
    preload: [comments: {c, user: l, avatar: d}]
  )

IO.inspect(Repo.one!(query))end

我收到

错误

(Ecto.QueryError) field BazaarApp.Market.Comment.avatar in preload is not an association in query:

修复了忘记添加括号的笨拙错误。

来自

preload: [comments: {c, user: l, avatar: d}]

preload: [comments: {c, [user: {l, avatar: d}] }]