我的模型:用户、组、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])

对组设置一个作用域也很好,但每次我这样做时它都会抛出一个错误。

最佳答案

有两种选择:
1)通过连接

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/

10-16 16:17