ruby-on-rails - 查找与 current_user 在同一组中的用户关联的所有记录
问题描述
我的模型:用户、组、GroupsUser 和可用性。
我想查找与一个或多个组关联的用户创建的所有可用性。
class Availability < ApplicationRecord
belongs_to :user
end
class User < ApplicationRecord
has_many :group_users
has_many :groups, through: :group_users
has_many :availabilities
end
class Group < ApplicationRecord
has_many :group_users
has_many :users, through: :group_users
end
class GroupUser < ApplicationRecord
belongs_to :group
belongs_to :user
end
这是我试图找到由与第一个用户在同一组中的用户创建的所有可用性的内容。如何进行此查询?
user = User.first
Availability.joins(:user).where('user.groups.pluck[:id] IN (?)', user.groups.pluck[:id])
将范围放在 Group 上也很好,但每次我这样做都会引发错误。
解决方案
有两种选择:
1)通过加入
Availability.joins(user: :groups).distinct
2)通过子查询
Availability.where(user_id: User.joins(:groups).distinct.pluck(:id))
如果您需要使用特定组过滤可用性,您可以添加.where(groups: { name: 'Group name' })
条件
推荐阅读
- python - 如何使用 Python 向 Viber 机器人发送消息?
- java - 使用java将Ms字表转换为图像
- android - android广播接收器中未调用onReceive()进行静态广播
- jquery - 使用 colspan 和 rowspan 在 MVC 中的 jquery 中附加表
- node.js - 无法在节点js中导入模块文件
- javascript - 动态添加删除按钮到事件后删除事件。删除按钮不可见
- laravel-5 - 在 Laravel 5.7 中运行 Envoy 访问错误
- angular - Ionic如何在输入时识别URL并根据URL发送带有密码的电子邮件以登录
- list - 如何在 Tcl 中的单词之间赋予动态变化的空间?
- c# - 当前类别名