

以下のような関係にあるモデルがあります。

`Group -< GroupUser >- User`

`Group` に `User` が所属できます。

「`ユーザーA`と`ユーザーB`と`ユーザーC` "のみ" が所属している`Group`を検索するにはどのように書くべきでしょうか？

今は`Group`を1つ1つ確認している状態で非常に効率が悪いです。

よろしくお願いします。

  * Rails 5.1.3
  * ActiveRecord 5.1.3


CC BY-SA 3.0
2017-08-04T13:26:28.577
36951
2023-01-11T06:06:40.783
9149
question
ruby-on-rails ruby rails-activerecord
Railsでhas_many throughのモデルの条件で検索するには


@naopontan さんもおっしゃっていますが、 `group_users` テーブルに対して検索を行う方が早いと思います。

[code]

    class UserGroup < ApplicationRecord # GroupUser が rails に取られてたので、これで代用
      self.table_name = 'group_users'
    end
    
    UserGroup
      .select(:group_id)
      .where(user: [user_a, user_b, user_c])
      .group(:group_id)
      .having('count(user_id) = 3')
    
[/code]


CC BY-SA 4.0
2018-07-07T16:14:57.117
45391
2018-07-07T16:14:57.117
754
36951
answer