1

我已经实现了“跟随”功能。显示“用户 A 正在关注的人”很简单,但显示“正在关注用户 A 的人”给我带来了麻烦。

我有 follow_links,其中有 id、user_id 和 follow_you_id 列。当用户 A 开始关注用户 B 时,列将类似于 (user_id = A, follow_you_id = B)。

为了向用户显示 A(@user) 正在关注,我可以简单地做

@follow_yous = @user.follow_yous

但我不确定如何显示关注 A(@user) 的用户

为此,我首先找到了所有相关链接。

@follow_links = FollowLink.where(:follow_you_id => @user.id)

现在我以为我可以这样做@follow_mes = @follow_links.users,但它说user是一个未定义的方法。所以我想我可以打电话user.follow_yousfollow_you.users.

我的下一个方法是

@follow_links = FollowLink.where(:follow_you_id => @user.id)
@follow_mes = User.where(:id => @user.id, :include => @follow_links)

我打算找到所有具有提供的 @follow_links 对象的 User 对象,但我认为语法错误。经过一番研究,我找不到一个像样的解决方案。我会很感激任何帮助。

更新:FollowLink 模型

  belongs_to :user
  belongs_to :follow_you, :class_name => "User"
4

2 回答 2

2

你可以joins这样使用:

@users = User.joins(:follow_links).where(:follow_links => { :follow_you_id => @user.id })
于 2012-12-13T01:08:46.773 回答
1

您可以使用以下内容:

@follow_links = FollowLink.where(:follow_you_id => @user.id)
@follow_links.collect(&:user) # :user should be the name of your relation to user in your followlink model
=> [User1, User2,...]
于 2012-12-13T01:03:27.350 回答