0

予定のメンバーとのハッシュがあり、Rails コントローラーで MySQL クエリを作成しようとしています。{1,3} などの map コマンドからの ID を持つユーザーは、クエリから除外する必要があります。たとえば、@appointment.members.map{|m| m.user_id} は {1,3,5} を返し、これら以外のすべてのユーザーを検索したいと考えています。

@users = User.where( "id NOT IN (?)", @appointment.members.map{|m| m.user_id} )

Rails 3.2.9 を使用しているため、このクエリから結果が得られないため、exclude ステートメントが間違っている可能性があります。問題はマップ配列ではありません-私はすでにそれをテストしました。前もって感謝します。

4

2 に答える 2

1

I think you just have a problem with the map method, try this:

@users = User.where( "id NOT IN (?)", @appointment.members.map(&:user_id) )

EDIT: removed the wrong syntax for future readers if any

于 2012-12-10T10:26:58.780 に答える
0

新しいインスタンス変数で問題を解決しました:

@members = @appointment.members.all

その後

@add_users = User.where( "id NOT IN (?)", @members.map(&:user_id) )

ご支援ありがとうございます

于 2012-12-10T12:06:22.880 に答える