与えられた 2 つのモデル:
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
等等。問題は、includes(:) を使用してすべての group_members をクエリし、1 つのクエリと各ループごとのクエリですべてのグループを招待する方法が見つからなかったため、多数のクエリが発生することです。使用方法に関する提案には、次のようなものがあります。
current_user.groups.includes(:group_members, :invites) ?