3

我有一个模型用户,它有一个“角色”属性,可以用“员工”或“经理”填充。现在我想要一个经理有_许多员工和员工属于_经理的关系。

是否可以在同一模型中执行此操作?我可以想到这样的事情:

has_many :employees, class_name: "User", :foreign_key => "employee_id"
belongs_to :manager, class_name: "User", :foreign_key => "manager_id"

即使这可行,我也怀疑这是最优雅的解决方案,因为您将有 2 个额外的外键。

4

1 回答 1

7

我通过在用户模型中创建这些关系来解决它:

  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
于 2013-07-03T12:13:59.740 回答