首页 > 解决方案 > Active Record - 多次加入同一个表

问题描述

我有一个A属于我的模型的User模型。我也有一个模型B,它属于我的B模型和我的User模型(这是两个不同的用户,比如医生和病人)。我想做的是这样的查询:

B.joins(:user, {a: :user}).where("patient.name = 'some condition' or doctor.name='some other condition'")

这里的重点是:如何指定我正在查询的 users.name 是与 A 或 B 模型关联的那个?任何帮助将不胜感激,谢谢!

标签: ruby-on-railsrails-activerecord

解决方案


您可以创建名为PatientDoctor继承自的新类User,然后将用户称为患者和医生,而不是通用用户。

class Doctor < User
  has_many :a
end
class Patient < User
  has_many :b
end

这是单表继承: https ://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html


推荐阅读