我的模型: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/