Has_many通过Rails 3.1中的has_many

时间:2013-11-07 00:03:39

标签: mysql ruby-on-rails ruby ruby-on-rails-3.1 rails-activerecord

我有一个用户模型,允许用户关注其他用户。每个用户也有很多东西:

class User
  has_many :following, :class_name => 'Followings', :foreign_key => 'follower_id'
  has_many :things
end

我最终想要做的是从用户关注的所有用户那里获取所有内容,并能够对此查询进行分页。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

取决于您希望如何分离数据。这将为您提供所有内容的独特数组,而无需保留他们所属的跟随用户:

@user = User.first
@things = @user.followings.map(&:things).flatten.uniq

答案 1 :(得分:0)

这正是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 docs中描述了:source选项。