簡體   English   中英

Rails自定義SQL查詢不適用於find_by_sql

[英]Rails Custom SQL Query not working with find_by_sql

我的Rails應用程序中有三個Tables用戶,user_groups和user_groups_users。 現在,我編寫了一個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_group_id,該用戶名恰好具有輸入提供的user_id。 在這種情況下,將提供1,4作為紅寶石陣列[1,4]。

現在,我想為我的Rails應用程序編寫此SQL查詢。 但是當我在rails中使用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作為輸入。

您正在獲取對象的數組,因此需要迭代遍歷該對象

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM