我有一个模型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模型相关联的用户? 任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
您可以创建从Patient
继承的名为Doctor
和User
的新类,然后将用户称为患者和医生,而不是普通用户。
class Doctor < User
has_many :a
end
class Patient < User
has_many :b
end
这是单表继承: https://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html
答案 1 :(得分:0)
也许这样的事情可行吗? (我尚未测试代码)
class User < ApplicationRecord
has_many :doctors
has_many :patients, through: :doctors
end
class Doctor < ApplicationRecord
belongs_to :user
has_many :patients
end
class Patient < ApplicationRecord
belongs_to :doctor
belongs_to :user
end
Patient.joins(user: {doctors: :user}).where("patient.name = 'some condition' or doctor.name='some other condition'")
希望这会有所帮助!