我有一个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执行此操作的方法是什么?
答案 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