2016-11-29 7 views
0

RailsのActiveRecordのクエリあいまいな列名エラー

SQLite3::SQLException: ambiguous column name: id: SELECT "users".* FROM "users" LEFT JOIN lists_users AS lu ON lu.user_id = id WHERE (id != 2 AND lu.list_id != 34)

ActiveRecordクエリの助けを借りてこれをどのように作成するのですか?

+0

あいまいさを避けるために 'users.id'を指定する必要はありませんか? –

+0

私はこのSQLの例では、特定のユーザIDを必要とします。ユーザid = 3を除外し、リストlists_usersのためにlu.list_idを除外すると、このテーブルは別名luを持ちます –

+0

例 –

答えて

2

Rails 5を使用している場合は、クエリにleft_outer_joinsを使用できます。また、notを使用すると、条件の不一致を防ぐために、テーブル名に条件を入れることができます。

left_outer_joins(:list_users).where.not(users: { id: user.id }, list_users: { list_id: list.id }) 
+0

この検索結果には、1人のIDを持つ多くのユーザーがいます。これはどうですか? –

+0

@ shuba.ivanは、クエリに '.distinct'を含めるだけです – Aguardientico

+0

あなたは何を使用していますか?ルビーの鉱山では、crtl +スペースが可能な関数を参照していない場合、クエリの関数を参照してください、多分いくつかのプラグインが必要ですが、私はプラグインを見つけることができません –

関連する問題