私は愚かだと感じますが、私はこれに対する答えを見つけることができません。適切でin in Railsの
User.where("attributes.id IN ?", list_of_attribute_ids)
結合または含むか、またはものは何でも:
私は属性のリスト与えられた多くの属性を持つユーザーを、持っている場合、私はレールにこのような何かを求めることができます。
しかし、これらのユーザーの逆セットを見つける方法はわかりません。つまり、結果が75のエントリを返した場合、100人のユーザが与えられた場合、他の25人を見つける方法はわかりません!
私は
User.where("attributes.id NOT IN ?", list_of_attribute_ids)
は(同様に、User.where.notを)うまくいくかもしれないが、それはない!と思いました代わりに、の属性のいずれかがリストのいずれかではないユーザーを探しますが、これは便利ですが、私が望むものではありません。ソートのIDがない中(IDのリストを収集)を選択し、ユーザーのためのSQLのようなものです
User.where.not(id: User.where("attributes.id IN ?", list_of_attribute_ids).pluck(:id))
:
私はそれを行う方法を知っている唯一の方法は、のようなものです。
しかし、これは大量にであり、一般的には数百を超えるエントリを持つデータベースには対応できません。
どうすればよいですか?
だから、あなたの最初の文の適切な "逆" は、すべてのユーザーがマイナス一致した者です最初の声明。あなたの正確なニーズに応じて、いくつかのアプローチが可能です。両方のセットが同時に必要な場合は、データセット全体を読み込んでから一致するユーザのID(属性付き)を取り出し、アプリ内で分割/グループ化できます。あるいは、あなたの最後の質問をすることができます。 –
http://guides.rubyonrails.org/active_record_querying.html#left-outer-joinsこれはあなたを助けるかもしれない – Vishal