我正在尝试查找除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)
我很感激任何帮助。
答案 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}?”)