我有一个模型用户,它有一个“角色”属性,可以填充“员工”或“经理”。现在我想要一种关系,其中经理拥有_许多员工,而员工属于_经理。
是否可以在同一模型中执行此操作?我可以想到这样的事情:
has_many :employees, class_name: "User", :foreign_key => "employee_id"
belongs_to :manager, class_name: "User", :foreign_key => "manager_id"
即使这可行,我也怀疑这是最优雅的解决方案,因为你会有 2 个额外的外键。
我通过在用户模型中创建这些关系来解决这个问题:
has_many :employees, class_name: "User", foreign_key: :manager_id
belongs_to :manager, class_name: "User", foreign_key: :manager_id
然后我可以创建一个经理和员工:
manager = User.create!(first_name: "Mario", last_name: "Manager", role: "manager")
employee = User.create!(first_name: "Ed", last_name: "Employee", role: "employee", manager_id: 16)
然后可以使用如下内容:
manager.employees
employee.manager
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)