2011-12-23 10 views
0

私はそうのようなものがあります:私は興味がどのようなRailsでは、2つのクエリを結合し、次に3番目のクエリを使用して最初のクエリから値を減算する方法は?

@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のリストを取得したいと思います。そして、user_idを@users_zに入れ、結合リスト(x + y)からそれを引きます。最後にuser_idsのリストを取得します。

これをどのようにwのルビー+レールから取り除くことができますか? THX

答えて

3

ような何か(@ users_x.collect(&:USER_ID)+ @ users_y.collect(&:USER_ID)) - users_z.collect(&:USER_ID)@

は、トリックを行う必要があります。 @users_xと@users_yの両方にidが指定されている場合、重複しないようにするにはuniqを入れたいかもしれません。

+0

ありがとう!私はこのユニークをどうやって作りますか?また、注文が確実に保存されていますか? – AnApprentice

+0

私は、注文が保存されていないと確信しています。私はちょうど試してみましたが、結合した結果は数字であり、users_yなどの上にはusers_xではありません。 – AnApprentice

+1

これはちょうど2つの配列を連結します - 最初の部分は '@ users_x' 2番目の部分は '@ users_y'からのものを含みます。 'uniq'を呼び出すことによってユニークなものにすることができます。 –

関連する問題