我有一个用户模型,允许用户关注其他用户。每个用户也有很多东西:
class User
has_many :following, :class_name => 'Followings', :foreign_key => 'follower_id'
has_many :things
end
我最终想做的是从用户关注的所有用户那里获取所有内容,并能够对这个查询进行分页。有什么建议么?
我有一个用户模型,允许用户关注其他用户。每个用户也有很多东西:
class User
has_many :following, :class_name => 'Followings', :foreign_key => 'follower_id'
has_many :things
end
我最终想做的是从用户关注的所有用户那里获取所有内容,并能够对这个查询进行分页。有什么建议么?
取决于您希望如何分离数据。这将为您提供所有事物的唯一数组,而不会保留他们属于哪些关注的用户:
@user = User.first
@things = @user.followings.map(&:things).flatten.uniq
这正是has_many :through的用途:
class User
# ...
has_many :followed_users, :through => :followings, :source => :followed
has_many :followed_things, :through => :followed_users, :source => :things
end
Rails API 文档:source
中描述了该选项。