一个用户有多个组认为是GroupsUser。
@groups_user.has_left = true
离开小组时,我们进行了设置。因此,通过执行 @ user.groups 不可能获得用户所属的组。
因此,我开始制作联接查询,但是还没有发现。
如何设计查询,以便@ user.active_groups仅返回groups_users联接表has_left等于false的查询?
app / models / user.rb
43 # Groups
44 has_many :groups_users, dependent: :destroy
45 has_many :groups, -> { distinct }, through: :groups_users
46 scope :active_groups, ->{ joins(:groups_users)
.merge(GroupsUser.active_members) }
app / models / groups_user.rb
37 scope :active_members, -> { where(has_left: false) }
答案 0 :(得分:0)
问题是我没有引用#{self.id}
。
这可行:
48 def my_groups
49 Group.joins(:groups_users)
.where("user_id = '#{self.id}'")
.where("has_left = false")
50 end