2011-12-23 41 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

相关问题