0

我有一个简单的问题。我有 2 个表:Followers(包含 id、user1、user2 列)和 Users(包含 id、name、address 列)。

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

我显然可以做一个大的 for 循环,但我也知道我可以在这里使用包含语句。我只是不知道该怎么做。这是我到目前为止所得到的:

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

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

谢谢你的帮助!林戈

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

关注.rb:

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

用户.rb:

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

1 回答 1

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)
于 2012-12-21T00:46:57.493 回答