2011-07-16 58 views
0

用戶的用戶屬性有很多關係活動記錄查詢返回user_ids的哈希值,找到每個

在我的關係表,我有一個字段:裁判包含每個記錄的USER_ID。 每條記錄​​也有user_id外鍵

我想查找在:裁判字段中有current_user.id的記錄,並從每個外鍵字段中選擇user_id。

refs = Relationship.where(:referee => current_user.id).select("user_id").all 

這導致這樣的數組,

[#<Relationship user_id: 16>, #<Relationship user_id: 17>] 

我現在想找到的用戶屬性,每個陣列中的ID的,我做過嘗試,但到目前爲止還沒有,例如:

User.where(:id => @refs_user_id).each do |user| 
    user.name 
end 

做了一些讀/觀看活動記錄高級查詢,範圍等,但不能完全似乎掌握怎麼在這裏需要。任何建議將不勝感激,謝謝!

回答

0

您可以選擇只user_id成分是這樣的:

User.where(:id => @refs_user_id.map(&:user_id)).each do |user| 
    user.name 
end 
+0

謝謝你,雖然在評估nil.map時發生nil對象錯誤? –

+0

我假設'@ refs_user_id'持有'Relationship.where(...)'查詢的結果。如果它真的是'refs',那麼使用'refs.map(&:user_id)' –

+0

謝謝Dylan,我對活動記錄查詢的理解是非常基本的。這是這樣的查詢的正確方法嗎? –

1

你可以只通過一個ID陣列ActiveRecord

User.find([1,2,3,4,5,6]) 

如果你只是想獲得的ID:

 User.find(:all, :conditions => 'id IN (?)',[1,2,3,4,5,6], :select => 'id') 

這隻會返回的ID。

+0

謝謝@codeglot,陣列中的我的查詢返回,似乎這個問題如此 - 我該如何返回只包含ID號數組? –

+0

我更新了代碼。 – s84