2010-07-10 57 views
3

我試圖找到所有用戶,只用一個ID,它是一個數組exclude_ids查詢對於除有ID的用戶在此集合中的所有用戶

這裏的會員用戶是我所:

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

這隻適用於exclude_ids只有1個元素的情況。如果有一個以上的元素,我得到

此錯誤:

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

我會很感激的任何幫助。

+0

爲什麼不如果'「ID檢查!= ?「,無」或沿着這些線? – theIV 2010-07-10 23:04:55

回答

5

我還沒有使用Rails 3中,但它的不安全使用User.where("id in #{exclude_ids} ?")

On Rails的2.X你做如下

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

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

+0

您可以使用all()方法而不是find(:all,...)。 – 2011-05-30 18:20:24

+0

You'ar da maaan!謝謝沃倫! – 0bserver07 2014-06-17 17:48:14

0

我沒有確認,但你可以試試這個

User.where( 「ID不是#{} exclude_ids?」)

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 
相關問題