我有一个模型用户,它具有"角色"属性,可以用"员工"或"经理"填充.现在我想要一个经理拥有员工和员工属于经理的关系.
是否可以在同一模型中执行此操作?我能想到这样的事情:
has_many :employees, class_name: "User", :foreign_key => "employee_id"
belongs_to :manager, class_name: "User", :foreign_key => "manager_id"
Run Code Online (Sandbox Code Playgroud)
即使这样可行,我也怀疑它是最优雅的解决方案,因为你会有2个额外的外键.
我通过在用户模型中创建这些关系来解决它:
has_many :employees, class_name: "User", foreign_key: :manager_id
belongs_to :manager, class_name: "User", foreign_key: :manager_id
Run Code Online (Sandbox Code Playgroud)
然后我可以创建一个经理和员工:
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)
Run Code Online (Sandbox Code Playgroud)
然后可以使用以下内容:
manager.employees
employee.manager
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
953 次 |
| 最近记录: |