我有两个模型:UserGroup
和User
,与many_to_many
关系。
在我的UserGroup索引操作中,我执行以下操作:
user_groups =
UserGroup
|> Repo.all
|> Repo.preload(:users)
并且,在视图中,在渲染用户组时,我执行以下操作:
def render("index.json", %{user_groups: user_groups}) do
%{
user_groups:
Enum.map(user_groups, fn user_group ->
%{
id: user_group.id,
name: user_group.name,
users: user_group.users
}
end)
}
end
更改!现在用户有一个状态,我想只显示active
用户。
如何“预定”用户的预加载,以便仅显示具有active
状态的用户?
您可以使用所需的Repo.preload
子句将部分查询传递给where
。假设“活跃”用户有user.status == "active"
,你可以这样做:
user_groups =
UserGroup
|> Repo.all
|> Repo.preload(users: from(u in User, where: u.status == "active"))
您可以在documentation中阅读更多相关信息。