1

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 を使用するために、文字列置換手法をどのように使用するかです。

4

1 に答える 1

1

オブジェクトの配列を取得しているので、ループを繰り返す必要があります

user_groups_users = [#<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >]

user_groups_users.map do |user_groups_user|
  puts user_groups_user.user_group_id
end
于 2013-12-04T12:44:54.937 に答える