我在我的应用程序中有两个表和四个模型。第一个模型是公司,它有公司的表格。其他模型是员工,司机和主管。我在我的应用程序中使用了单表继承。Ruby On Rails自联接关联
公司型号:
class Company < ApplicationRecord
has_many :employees
end
而且表结构
ID NAME
1 XXX company
和员工,司机和监事型号:
class Employee < ApplicationRecord
belongs_to :company
end
class Chef < Employee
end
class Driver < Employee
end
class Supervisor < Employee
end
和员工表结构:
ID NAME COMPANY_ID TYPE
1 Jo 1 Supervisor
2 Jack 1 Driver
3 William 1 Driver
4 Avarell 1 Driver
5 Sam 1 Chef
我需要做的是我希望主管通过has_many关联访问属于同一公司的所有驱动程序。
我曾尝试下面这段代码在主管类:
has_many :drivers, ->(supervisor) {where(company: supervisor.company)}
然而,轨道创建下面的SQL,这是不是我期待
SELECT `employees`.* FROM `employees` WHERE `employees`.`type` IN ('Driver') AND `employees`.`supervisor_id` = 4 AND `employees`.`type` IN ('Driver', 'Supervisor') AND `employees`.`company_id` = 1
我想轨在构建关联时创建这样的查询。
SELECT `employees`.* FROM `employees` WHERE `employees`.`type` IN ('Driver') AND `employees`.`company_id` = 1
任何suggesstions,
感谢。
做一个'驱动程序''has_one:supervisor'?或者这种关联不重要? –