0

给定两个模型:

User
  has_many :group_members
  has_many :groups, :through => :group_members

GroupMember
  belongs_to :group
  belongs_to :user

Group
  has_many :group_members
  has_many :users, :through => :group_members
  has_many :group_invites

GroupInvite
  belongs_to :user

感谢 Rails,我可以轻松获取所有用户组:

组 = current_user.groups

然后我获取这个组列表并遍历以创建一个 JSON 对象,如下所示:

groups.each do |group|
  ....
  group.group_members.count
  group.invites.first_code

等等等等 问题是这会导致大量查询,因为我还没有找到一种方法来使用 include(:) 来查询所有 group_members 并通过一个查询而不是每个循环的查询来邀请所有组。关于如何使用的任何建议包括:

current_user.groups.includes(:group_members, :invites) ?
4

1 回答 1

2

试试这个:

GroupMember
  belongs_to :group
  belongs_to :user

Group
  has_many :group_members
  has_many :users, :through => :group_members
  has_many :invites, :
  has_many :invitees, :through => :invites, :source => :user

Invite
  belongs_to :group
  belongs_to :user

现在你可以:

current_user.groups.includes(:invitees)
于 2012-06-22T01:34:54.427 回答