我想创建经理->员工协会。
如何实现此设计?我创建了一个更近的东西(下面的代码),但是在我的设计经理中可以有其他经理。
class User < ApplicationRecord
has_many :employee, class_name: "User", foreign_key: "manager_id"
belongs_to :manager, class_name: "User", foreign_key: "manager_id"
end
非常感谢您的帮助!
我认为最好在表中再增加一个字段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