在Rails中获取集合的关系

时间:2019-05-09 23:43:08

标签: sql ruby-on-rails activerecord

很简单,但是找不到在rails中执行的方法。我有一个特定的用户活动记录集合。类似于users = User.where(blabla)。给定此收藏集,有没有一种简单的方法来获取这些用户所拥有的所有帖子?与User.posts类似,仅适用于该集合中的所有用户。

帖子属于用户,用户has_many个帖子。

谢谢!

1 个答案:

答案 0 :(得分:3)

假设您的Post模型具有一个名为“ user”的关联的user_id,则可以执行以下操作:

Post.where(user_id: User.where(blablah))

Post.joins(:user).where(users: {<user conditions>})

您需要能够根据用户条件使用哈希表才能使用第二个选项。例如:

Post.joins(:user).where(users: {role: 'member'})

如果您的用户查询更为复杂,则可以为其创建范围:

class User < ApplicationRecord
  scope :special, -> { where(< user conditions go here>) }
end

然后将其与Post查询合并:

Post.joins(:user).merge(User.special)