2009-10-15 47 views
1

我試圖以確定最佳的結構接近的多層次的用戶羣體。到目前爲止,我已經創建了一個名爲「用戶」的對象,我認爲它可能會被分成不同的級別。還是應該爲每個用戶組創建不同的表格?多層次的用戶羣體

+0

當你說「多層次」你指的是安全級別? – 2009-10-15 05:50:18

+0

是的,這是我的問題。訪問級別 – Kevin 2009-10-16 04:44:55

回答

1

看看Single Table Inheritance.

短的版本是,你一個類型(字符串)列添加到您的表和子類,將使用該表從用戶其它型號

如:

class SuperUser < User 
    ... 
end 
0

正如EmFi所建議的,單表繼承是您最好的選擇。您將需要的類型字段添加到用戶數據庫中的表和繼承您的用戶模型如下:

class Admin < User 
    # You probably don't need any methods here. 
end 

,但你還需要過濾器之前創建一個。與確保用戶登錄的類似,它只是檢查用戶的類別。這應該在你的ApplicationController:

def check_admin 
    current_user.is_a? Admin 
end 

你去了,鮑勃的你的叔叔,你有基本的授權。

要在rails中將用戶提升爲Admin,只需更改類型字段。當然,用這種方式,用戶只能擁有一個訪問級別(這對許多應用程序來說是很好的)。如果你想要一個更復雜的系統,acl9對於這項工作來說裝備很好。我個人習慣使用它和authlogic一起構成一個相當強大的系統。