Rails 3 ActiveRecord查询问题

时间:2012-12-13 00:58:42

标签: ruby-on-rails-3 activerecord

我已经实现了“跟随”功能。显示“人们用户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"

2 个答案:

答案 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,...]