需要从2个表中提取数据,尝试使用包含但却失败了

时间:2012-12-21 00:05:50

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有一个简单的问题。我有2个表:关注者(列id,user1,user2)和用户(列id,名称,地址)。

我想获取给定用户的关注者的所有用户数据。即在尽可能高效的查询中,我想这样做:Followers.find_all_by_id(10)。然后,对于该列表中的每个关注者,我想在Users表中查找它们。

我显然可以做一个大的for循环,但我也知道我可以在这里使用一个include语句。我只是无法弄清楚如何去做。这是我到目前为止所得到的:

Follow.includes(:user).where('user1=?',current_user.id)

这不起作用(我得到的结果只是Follow表的一个小节)。

感谢您的帮助! 林檎

这是我的模特的样子......

Follow.rb:

class Follow < ActiveRecord::Base
  belongs_to :photo_taker, :class_name => "User"
  belongs_to :user 
end

User.rb:

has_many :followings, :class_name => 'Follow', :dependent => :destroy
has_many :followers, :class_name => 'Follow', :foreign_key => 'user2', :dependent => :destroy

1 个答案:

答案 0 :(得分:0)

# Follow:
belongs_to :photo_taker, :foreign_key => :user2, :class_name => "User"
belongs_to :user, :foreign_key => :user1

# User:
has_many :followings, :class_name => 'Follow', :foreign_key => :user1, :dependent => :destroy
has_many :followers, :through => :followings, :source => :photo_taker, :dependent => :destroy

user.followers
#=> returns following users

如果您需要使用包含的关注者完全关注对象。

user.followings.includes(:photo_taker)