【发布时间】:2019-04-16 07:42:43
【问题描述】:
我有一个模型“用户”,它与另一个模型“会员”有一对多的关系。成员资格有一个名为“组”的字段,该字段具有组的名称。我想查询特定“组”中的所有用户记录,并为返回的每个用户急切加载所有“成员资格”。
在进一步讨论之前,我知道通常您会实现一个“组”模型,并使成员资格成为用户和组之间的连接表,然后只查询特定组的所有用户。这个例子有点做作,但它代表了我正在研究的真实案例。
无论如何,我尝试了以下查询:
User.includes(:memberships).where(memberships: { group: groupname })
但是,虽然这会返回正确的用户,但它只会急切加载与查询匹配的成员资格。换句话说,如果用户“Bob”在“red”和“blue”组中,我查询所有“blue”组用户,结果中返回用户“Bob”,但只返回他的“blue”组成员身份已加载。
有没有办法通过单个数据库查询并立即加载每个返回用户的所有成员资格?
【问题讨论】:
标签: ruby-on-rails activerecord rails-activerecord