2010-11-09 80 views
1

我想通過以下方式來管理用戶權限:處理數組/表文本列哈希

在我的數據庫中,我創建了一個表,一個名爲「permission_posts」列。在「permission_posts」的數據是文本,並對其內容的示例如下:

write = false 
read = true 
... 

我想訪問「寫」和「讀」的價值來管理用戶的操作。 在我的情況下,我能做些什麼來輕鬆檢索寫/讀屬性的真/假值?

作爲RoR的新手,我去互聯網搜索,發現了一些可能不需要達到我的目標的東西:序列化數據並將字符串轉換爲數組,然後在其中搜索。對於這兩種替代方案(如果它們是有效的),我不知道如何繼續。

P.S .:這是一種安全的方法來管理用戶權限?有沒有更好的方法去做我想要的?

回答

0

首先,你應該在至少兩個單獨的文本列,使表看起來像:

(user_id, action, is_permitted) 

,或者甚至,

(user_id, action_id, is_permitted) 

另一種可能的方法,你可以採取,但只如果這組動作是固定的:

(user_id, action1_permitted, action2_permitted ...) 
+0

我想我會使用你建議我的第三個選項:(user_id,action1_permitted,action2_permitted ...)。 唯一的疑問是,我可以有一個有很多列的表格,每個對應每個對象的每個對象!這就是爲什麼我想處理原始問題中描述的行爲。 – user502052 2010-11-09 17:42:40

0

我真的不知道這是否是一種好方法,但我認爲它值得在這裏參考。

我會將權限存儲爲整數而不是字符串。該值取決於寫入和讀取值。所以,寫的是第一位和讀是第二位(在二進制一個整數表示,因爲他們是真正的,唯一假)

所以

write = false, read = false => 00 => 0 
write = true, read = false => 01 => 1 (although this one seems strange :D) 
write = false, read = true => 10 => 2 
write = true, read = true => 11 => 3 

所以,如果你要搜索的用戶誰已閱讀權限但沒有寫入權限,則只需按值2進行搜索。

0

有沒有原因您沒有使用遷移?正常的Rails程序會生成一個模型:

script/generate model Permission user_id:integer action:string is_permitted:boolean 

然後遷移數據庫中創建表。然後將表關聯到用戶(用戶has_many權限)。

0

我會採取不同的方法和使用已經有基於我所需要的東西:

另一個appr如果你想要一個到多個用戶 - 許可將使用位掩碼。 Here可以根據您的需求調整角色的示例。