2012-01-11 59 views
1

我有一個模型在rails中,可以說User,我想與另一個用戶有關係。同一模型之間的紅寶石關係

用戶A,可以是用戶B和用戶B的凸臺可以是用戶C和D

的老闆這種關係是一對多的。一個用戶可以站在多個用戶之上。

我會如何做到這一點。
我的用戶模型目前有ID,其名稱爲boss_id,如果用戶處於食物鏈頂端,則該值爲零。

我的活動記錄類看起來是這樣的:

class User < ActiveRecord::Base 

    has_many :users #People beneath the user 
    belongs_to :user 
end 

但現在我想用關係與名稱。可以說bossfollowers

我該如何做到這一點?

回答

6

下面是它會是什麼樣子:

class User < ActiveRecord::Base 

    belongs_to :boss, :class_name => 'User' 
    has_many :followers, :class_name => 'User', :foreign_key => :boss_id 

end 
1

這就是所謂的自聯接

自加入

在設計數據模型,有時你會發現,應該有一個關係的典範自己。例如,您可能希望將所有員工存儲在單一數據庫模型中,但能夠跟蹤管理者與下屬之間的關係。這種情況可以用自加盟協會進行建模:

員工例如:

class Employee < ActiveRecord::Base 

    has_many :subordinates, :class_name => "Employee" 
    belongs_to :manager, :class_name => "Employee", :foreign_key => "manager_id" 

end 

有了這個設置,您可以檢索@ employee.subordinates@ employee.manager

+0

Refrence site http://guides.rubyonrails.org/association_basics.html#self-joins – 2012-01-11 14:53:04