查询除此集合中具有ID的用户之外的所有用户

时间:2010-07-10 22:49:24

标签: ruby-on-rails activerecord ruby-on-rails-3

我正在尝试查找除ID为exclude_ids

成员的用户以外的所有用户

这就是我所拥有的:

User.where("id != ?", exclude_ids)

仅当exclude_ids只有1个元素时才有效。如果它有多个元素,我会得到

此错误:

ActiveRecord::StatementInvalid: SQLite3::SQLException: near ",": syntax error: SELECT     "users".* FROM       "users" WHERE     (id != 1,2)

我很感激任何帮助。

3 个答案:

答案 0 :(得分:5)

我没有使用Rails 3,但使用User.where("id in #{exclude_ids} ?")不安全。

在Rails 2.x上,你可以按照以下方式进行操作

User.find(:all, :conditions => ["id NOT IN (?)", [1,2,3]])

Rails 3.x docs http://railsapi.com/doc/rails-v3.0.0.beta.3/classes/ActiveRecord/Base.html

答案 1 :(得分:2)

User.where('id NOT IN (:ids)', ids: exclude_ids)  # SQL does the filtering

User.select { |u| exclude_ids.exclude? u.id }  # Ruby does the filtering

答案 2 :(得分:0)

我不确认,但你可以试试这个

User.where(“id不在#{exclude_ids}?”)