是否可以在一个模型中使用多个自我联接

时间:2016-02-13 08:34:50

标签: ruby-on-rails ruby activerecord

您可以在一个模型中使用多个自联接,就像下面的代码一样。我的协会的简要概述

  • 用户可以有很多管理员,经理,团队负责人,员工和 客户端。
  • 管理员可以有很多经理,团队负责人,客户和员工
  • 经理可以有很多团队领导,员工和客户
  • 团队负责人可以有很多员工和客户
  • 员工属于团队领导,可以拥有多个客户。
  • 客户有很多员工,也属于团队负责人。

模型

class User < ActiveRecord::Base

  has_many :manager, class_name: "User", foreign_key: "admin_id"
  belongs_to :admin, class_name: "User"

  has_many :team_leader, class_name: "User", foreign_key: "manager_id"
  belongs_to :manager, class_name: "User"

  has_many :staff, class_name: "User", foreign_key: "team_leader_id"
  belongs_to :team_leader, class_name: "User"

  has_many :client, class_name: "User", foreign_key: "team_leader_id"
  belongs_to :team_leader, class_name: "User"

  has_and_belongs_to_many :client , class_name: "User", foreign_key: "client_id"
  has_and_belongs_to_many :staff , class_name: "User", foreign_key: "staff_id"

end

和我的数据库表

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.integer :user_id
      t.integer :admin_id
      t.integer :manager_id
      t.integer :team_leader_id
      t.integer :staff_id
      t.integer :client_id

      t.timestamps null: false
    end
  end
end

任何帮助将不胜感激

0 个答案:

没有答案