我有2个模型,Employee
和Approval
。我想建立一个关联,以使:approval
belongs_to
有2个不同的雇员(1个经理,1个下属)。我该如何设置?我希望能够获得经理和下属的所有批准。
答案 0 :(得分:2)
您可以在class_name
上显式声明belongs_to
和has_many
上的foreign_key
和has_many
class Approval < ApplicationModel
belongs_to :manager, class_name: 'Employee'
belongs_to :subordinate, class_name: 'Employee'
end
class Employee < ApplicationModel
has_many :manager_approvals, foreign_key: :manager_id, class_name: 'Approval'
has_many :subordinate_approvals, foreign_key: :subordinate_id, class_name: 'Approval'
end
文档:
答案 1 :(得分:1)
1 =>将迁移添加manager_id
列添加到Employee
rails g migration add_manager_id_to_employee manager_id:integer
2 =>与员工模型的自引用关联
class Employee < ApplicationRecord
belongs_to :manager, optional: true
has_many : subordinates, :class_name => "Employee", :foreign_key => "manager_id"
end
3 =>
class Approval < ApplicationRecord
belongs_to :employee
has_one :manager, { where("employees.manager_id= nil ") }
has_one :subordinate, { where("employees.manager_id= self.employee_id") }
end