Rails:用户has_many:推荐:通过其他用户

时间:2016-06-28 23:24:54

标签: ruby-on-rails activerecord

我有一个rails项目,其中用户has_many:推荐。用户也有很多关注者并通过连接跟踪:

 has_many :recommendations
 has_many :followers, :class_name => 'Connection', :foreign_key => 'user_id'
 has_many :following, :class_name => 'Connection', :foreign_key => 'follower_id' 

当用户创建推荐时,他们的关注者应该能够访问该建议。

所以我希望能够调用following_user.following.recommendations从所有用户所关注的人那里获得推荐。

使用ActiveRecord执行此操作的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以通过source选项指定要在直通中使用的关联。只需将其关联的名称传递给另一个类。

docs解释source选项,如下所示:

  

:source选项指定has_many :through关联的源关联名称。如果无法从关联名称自动推断源关联的名称,则只需使用此选项。

这样的事情应该有效:

class User
  has_many :followed_users, :through => :following, :source => :user class_name: User

  has_many :followed_recommendations, :through => :followed_users, :source => :recommendations, class_name: Recommendation
end