代码之家  ›  专栏  ›  技术社区  ›  Jeremy Thomas

具有相同关系的多个实例的Rails关联

  •  2
  • Jeremy Thomas  · 技术社区  · 6 年前

    Employee Approval :approval belongs_to 2名不同的员工(1名经理,1名下属)。我该怎么设置呢?我希望能够获得经理和下属的所有批准。

    2 回复  |  直到 6 年前
        1
  •  2
  •   mrzasa    6 年前

    您可以显式地这样做 class_name 在…上 belongs_to has_many foreign_key 在…上 你有很多

    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
    

        2
  •  1
  •   Anand    6 年前

    1=>添加迁移添加 manager_id Employee

    rails g migration add_manager_id_to_employee manager_id:integer
    

    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