sql - 获取rails中集合的关系
问题描述
如此简单,但在rails中找不到如何做到这一点。我有一个特定的用户活动记录集合。类似的东西users = User.where(blabla)
。鉴于此集合,是否有一种简单的方法可以获取这些用户拥有的所有帖子?与 User.posts 类似,仅适用于该集合中的所有用户。
帖子属于_to 用户,用户有_many 帖子。
谢谢!
解决方案
假设您的 Post 模型有一个 user_id 与一个名为“user”的关联,您可以执行以下操作:
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)
推荐阅读
- google-cloud-platform - 在 AutoML Vision 中使用连续变量作为标签
- python - scipy中具有时变系数的ODE
- r - 如何对非二元变量执行逻辑回归?
- python - 从opencv中的视频文件读取错误
- python - 预计第 14 行中有 11 个字段,见第 12 行。错误可能是由于使用多字符分隔符时忽略引号引起的
- php - PHP 使用 .cer 和 .p7b 证书访问 web 服务
- abap - 打开文档返回错误 (SOFFICEINTEGRATION)
- javascript - GoogleAuth.isSignedIn.get(); 是假而不是真
- react-native - 标注内的按钮单击在本机地图-android中不起作用
- reactjs - 在 Nextjs/React 应用程序中实现 Facebook Sdk 评论插件