ruby-on-rails - 如何制作仅返回 UserGroups.has_left = false 的组的 ActiveRecord 连接查询
问题描述
一个用户 has_many groups 认为是 GroupsUser。我们@groups_user.has_left = true
在他离开小组时设置。因此,无法通过@user.groups获取用户所属的组。所以我开始制作一个连接查询,但我还没有搞定它。
如何制作我的查询,以便@user.active_groups 只返回groups_users 加入表has_left 等于false 的那些?
应用程序/模型/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) }
应用程序/模型/groups_user.rb
37 scope :active_members, -> { where(has_left: false) }
解决方案
问题是我没有引用#{self.id}
. 这有效:
48 def my_groups
49 Group.joins(:groups_users)
.where("user_id = '#{self.id}'")
.where("has_left = false")
50 end
推荐阅读
- swift - Swift JsonDecoder Networking Hi 未打印
- ruby-on-rails - 在 Rails 中使用局部变量(添加占位符)时出现问题?
- c# - 查找数组中的异常值?
- python - cross_validate 和样本数
- java - 错误:javaweb java.lang.NoClassDefFoundError:org/apache/commons/fileupload/FileItemFactory
- css - 单击时的 CSS 按钮
- sql - 如何在 Redshift ORDER BY 子句中首先按特定值排序?
- python - python - 我在哪里可以查找 types.FunctionType 的参数?
- google-apps-script - 未能在 Google 表格条件格式中创建 3 个单独的色阶范围
- openscad - 关闭 scad 对象顶部和底部的孔