2011-12-23 74 views
0

我有一些像這樣:Rails,如何組合兩個查詢,然後用戶第三個查詢從第一個到第

@users_x = returns 0 or more records with (id, user_id, etc...) 
@users_y = returns 0 or more records with (id, user_id, etc...) 
@users_z = returns 0 or more records with (id, user_id, etc...) 

我很感興趣的是user_ids。我想在維護訂單的同時獲取@users_x + @user_y的user_id列表。然後獲取@users_z中的user_ids,並將其從組合列表(x + y)中減去。最後得到user_ids的列表。

我怎麼能把這個關掉紅寶石+鐵軌? THX

回答

3

喜歡的東西

(@ users_x.collect(&:USER_ID)+ @ users_y.collect(&:USER_ID)) - @ users_z.collect(&:USER_ID)

應該做的伎倆。如果你不想在那裏出現重複的@users_x和@users_y

+0

謝謝!你可能想在那裏拋出一個uniq。我將如何使這個uniq?另外,你確定訂單正在保存嗎? – AnApprentice 2011-12-23 20:16:59

+0

我很確定訂單沒有被保存,我需要。我剛剛嘗試過,合併後的結果是數字順序的,而不是users_y之上的users_x等...... – AnApprentice 2011-12-23 20:17:57

+1

這只是連接兩個數組 - 第一部分的ID將按照它們在@ users_x'中的順序排列,第二部分將包含'@ users_y'中的內容。你可以通過調用uniq' – 2011-12-23 20:21:22

相關問題