ruby-on-rails - 查找与 current_user 在同一组中的用户关联的所有记录

标签 ruby-on-rails ruby postgresql

我的模型:User、Group、GroupsUser 和 Availability。

我想查找由关联到一个或多个组的用户创建的所有可用性。

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])

在组上放置一个范围也很好,但每次我这样做都会抛出一个错误。

最佳答案

有两种选择:

1)通过join

Availability.joins(user: :groups).distinct

2) 通过子查询

Availability.where(user_id: User.joins(:groups).distinct.pluck(:id))

如果您需要过滤特定组的可用性,您可以添加 .where(groups: { name: 'Group name' }) 条件

关于ruby-on-rails - 查找与 current_user 在同一组中的用户关联的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56344677/

相关文章:

html - CSS 和 JS 没有在一个 Controller 中加载两个 Action ruby​​ on rails

ruby-on-rails - Ruby on Rails bundler 和 github ssl 错误

ruby-on-rails - 我们如何在 rails 中添加带有 div 的 link_to?

Ruby:如何将数组的元素与前缀连接在一起?

java - 在 JPA 中使用 oneToMany 关系时,Postgresql 在列中抛出空值违反了非空约束

ruby-on-rails - 用散列对数组求和

ruby-on-rails - 将 Rails 中特定列中的所有行相加?

ruby - 将 ruby​​ 代码注入(inject)嵌套block

sql - 将查询中每一行的 bool 值设置为 FALSE 'HAVING' ?

postgresql - 将html插入数据库时​​如何解决引号问题?