经理->员工协会一级

问题描述 投票:0回答:1

我想创建经理->员工协会。

  • 经理有很多员工
  • 员工仅属于一名经理
  • 经理没有其他经理

如何实现此设计?我创建了一个更近的东西(下面的代码),但是在我的设计经理中可以有其他经理。

class User < ApplicationRecord
  has_many :employee, class_name: "User", foreign_key: "manager_id"
  belongs_to :manager, class_name: "User", foreign_key: "manager_id"
end

非常感谢您的帮助!

ruby-on-rails ruby model-associations rails-models
1个回答
0
投票

我认为最好在表中再增加一个字段manager: boolean。在此字段的基础上,您可以确定用户是否是管理员。您还可以添加验证,如果manager字段为true,则manager_id必须为空白。

validate :manager_id_blank_for_manager

has_many :employees, class_name: "User", foreign_key: "manager_id", dependent: :restrict_with_exception

scope :managers, ->{ where(manager: true) }

def manager?
  manager
end

private

def manager_id_blank_for_manager
  if manager_id.present? && manager?
    errors.add(:manager_id, :must_be_blank_for_manager) # Move this error to yml file
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.