我已经实现了“跟随”功能。显示“人们用户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_yous
或follow_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"
答案 0 :(得分:2)
您可以像这样使用joins
:
@users = User.joins(:follow_links).where(:follow_links => { :follow_you_id => @user.id })
答案 1 :(得分: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,...]