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