我有两个模型: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
状态的用户?
答案 0 :(得分:1)
您可以使用所需的Repo.preload
子句将部分查询传递给where
。假设"活跃"用户有user.status == "active"
,您可以这样做:
user_groups =
UserGroup
|> Repo.all
|> Repo.preload(users: from(u in User, where: u.status == "active"))
您可以在documentation。
中详细了解相关信息