【发布时间】:2021-05-07 06:39:13
【问题描述】:
我的目的是让所有与school_admin 或dormitory_admin 有关系的用户
所以这里是表格。
users (has one school_admin or has one dormitory_admin)
-id
-username
has_one :school_admin
has_one :dormitory_admin
school_admins (pivot table)
-id
-school_id
-user_id
belongs_to :user
belongs_to :school
dormitory_admins (pivot table)
-id
-dormitory_id
-user_id
school (has many dormitory)
-id
-name
has_many :dormitories
dormitory (belongs to one school)
-id
-school_id
这是我当前的查询(我现在有 2 个查询,我需要将其合并为一个查询)
@q1 = User.joins(:school_admin).where(school_admin: { school_id: current_user.school_admin.school_id }).select("users.id, users.username, school_admin.name, school_admin.phone").ransack(params[:q])
@q2 = User.joins(:dormitory_admin).where(dormitory_admin: { dormitory_id: current_user.school_admin.school.dormitories.pluck(:id) }).select("users.id, users.username, dormitory_admin.name, dormitory_admin.phone").ransack(params[:q])
我使用 ransack gem 进行表过滤,使用 PostgreSQL 进行数据库。
我可以使用像ActiveRecord::Base.connection.execute(sql) 这样的纯 SQL 来执行“UNION”,但如果我使用它,ransack gem 将无法工作。
【问题讨论】:
-
可以添加关联吗
-
已更新,先生,请查看我的新更新帖子
-
@mrobbizulifkar 现在检查我已经更新了我的答案。
标签: ruby-on-rails ruby postgresql ruby-on-rails-6