Rails アプリケーションには、user_groups と user_groups_users という 3 つのテーブル ユーザーがいます。今、私はSQLクエリを書きました
SELECT user_group_id FROM user_groups_users GROUP BY user_group_id HAVING SUM(CASE WHEN user_id IN (1,4) THEN 1 ELSE 0 END) = COUNT(*)
入力によって提供されたuser_idsを正確に持つuser_group_idを抽出します。この場合、1,4 はルビ配列 [1,4] として提供されます。
ここで、Rails アプリケーション用にこの SQL クエリを書きたいと思います。しかしfind_by_sql
、レールでステートメントを使用してこのクエリを実行すると、正しい番号が返されます。特定の user_id が属している user_group のうち、結果には user_group_id が表示されません。
=> [#<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >]
どうすればそれから User_group_id を抽出できますか。
ただし、データベースに直接接続してクエリを実行すると。私は望ましい結果を得ています
sql = "SELECT user_group_id FROM user_groups_users WHERE user_id IN (1,2) GROUP BY user_group_id HAVING Count(DISTINCT user_id) = 2;"
records_array = ActiveRecord::Base.connection.execute(sql)
しかし、ここでの問題は、入力として与えられた user_ids を使用するために、文字列置換手法をどのように使用するかです。