开发者

active record query returns hash of user_ids, find user attributes for each

User has many Relationships

In my relationships table i have a field :referee containing a user_id for each record. Each record also has user_id foreign key

I want to find the records that have current_user.id in the :referee field and select user_id from the foreign key field for each one开发者_如何学编程.

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

This results in an array like this,

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

I now want to find User attributes for each of the ids in the array, I've tried but so far failed, for example:

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

Did some reading/watching on active record advanced queries, scopes etc but can't quite seem to grasp what's required here. Any suggestions would be much appreciated, thanks!


You can just pass an array of ids to ActiveRecord

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

And if you just want to get the ids:

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

That will only return the ids.


You can select just the user_id components like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜