我在我的應用程序中有兩個表和四個模型。第一個模型是公司,它有公司的表格。其他模型是員工,司機和主管。我在我的應用程序中使用了單表繼承。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'?或者這種關聯不重要? –