2012-12-10 17 views
0

我有一個約會的成員散列,並嘗試在我的軌道控制器中創建一個MySQL查詢。 帶有來自map命令的id的用戶例如查詢中應排除{1,3}。 所以例如@ appointment.members.map {| m | m.user_id}返回{1,3,5},我想找到所有其他用戶,但這些。是不是條件的rails實例變量

@users = User.where("id NOT IN (?)", @appointment.members.map{|m| m.user_id}) 

我使用Rails 3.2.9,所以也許我排除說法是錯誤的,因爲我沒有得到任何結果出這個查詢。問題不能是地圖數組 - 我已經測試過了。 在此先感謝。

+0

生成的查詢有什麼錯誤? –

+0

這就是奇怪的部分 - 如果我在rails控制檯中測試查詢,我會得到有效的結果,但在控制器中,@users實例變量爲空... – Nenzo

+0

「@ appointment.members」真的是哈希還是你的意思是它是一個'has_many'的關係? – mikej

回答

1

我認爲你只是用map方法的問題,試試這個:

@users = User.where("id NOT IN (?)", @appointment.members.map(&:user_id)) 

編輯:刪除了錯誤的語法,如果任何

+0

第一個只返回一個空數組[第二個,我得到所有用戶,包括那些在.map數組中 – Nenzo

+1

第二個是無效的。第一個是 –

0

我有一個新的實例變量解決了這個問題未來的讀者:

@members = @appointment.members.all 

然後

@add_users = User.where("id NOT IN (?)", @members.map(&:user_id)) 

感謝您的支持

+0

然後你可以直接執行'@add_users = User.where(「id NOT IN(?)」,@ appointment.members.all.map(&:user_id))',但你知道嗎? – 244an