2010-11-09 77 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可以根据您的需求调整角色的示例。