2011-07-16 10 views
0

ユーザーのユーザー属性を見つけ、user_idsのハッシュを返します。 各レコードにもuser_idの外部キーがありますアクティブレコードクエリは、多くの関係私の関係テーブルで</p> <p>私はフィールドを持っているがあり、各

:refereeフィールドにcurrent_user.idが含まれているレコードを見つけ、それぞれの外部キーフィールドからuser_idを選択します。

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

これは私が今、アレイ内の各IDのユーザー属性を見つけたい

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

、私が試したが、これまでのところ、たとえば、失敗した、このような配列になり:

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

アクティブレコードで見て/いくつかの読書をしたクエリ、スコープなどを進めたが、かなり、ここで必要なのものを把握するように見えることはできません。どんな提案も大変感謝しています。ありがとう!

答えて

0

あなたはこのようなだけuser_idコンポーネントを選択することができます@codeglot、配列はそう問題に思える私のクエリで返さ

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

あなただけActiveRecord

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

にIDの配列を渡すことができますし、ただのIDを取得したい場合:

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

IDのみを返します。

+0

感謝を - どのように私は唯一のID番号を含む配列を返すことができますか? –

+0

私はコードを更新しました。 – s84

関連する問題