Employee < ActiveRecord::Base
belongs_to :manager,
:_name => "Employee",
:foreign_key => "manager_id"
belongs_to :mentor,
:_name => "Employee",
:foreign_key => "mentor_id"
has_many :mentored_employees,
:_name => "Employee",
:foreign_key => "mentor_id"
has_many :managed_employees,
:_name => "Employee",
:foreign_key => "manager_id"
end
让我们使用些数据这里雇员Clem和Dawn都有上级和下级:
Employee.delete_all
adam = Employee.create(:id => 1, :name => "Adam")
beth = Employee.create(:id => 2, :name => "Beth")
clem = Employee.(:name => "Clem")
clem.manager = adam
clem.mentor = beth
clem.save!
dawn = Employee.(:name => "Dawn")
dawn.manager = adam
dawn.mentor = clem
dawn.save!
现在我们可以通过关联来回答“X下属是谁?”“Y上级是谁?”
p adam.managed_employees.map {|e| e.name} # => [ "Clem", "Dawn" ]
p adam.mentored_employees # =>
p dawn.mentor.name # => "Clem"
最新评论