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