Ruby on rails 处理表文本列中的数组/哈希
我正试图通过以下方式管理用户权限: 在我的数据库中,我创建了一个表,其中有一列名为“permission\u posts”。“permission_posts”中的数据为文本,其内容示例如下:Ruby on rails 处理表文本列中的数组/哈希,ruby-on-rails,ruby,arrays,hash,Ruby On Rails,Ruby,Arrays,Hash,我正试图通过以下方式管理用户权限: 在我的数据库中,我创建了一个表,其中有一列名为“permission\u posts”。“permission_posts”中的数据为文本,其内容示例如下: write = false read = true ... 我想访问“写入”和“读取”的值来管理用户操作。 在我的例子中,我可以做什么来轻松检索写/读属性的真/假值 作为RoR的新手,我在互联网上搜索,发现了一些可能不需要达到我的目标的东西:序列化数据,将字符串转换为数组,然后在其中搜索。对于这两个备选
write = false
read = true
...
我想访问“写入”和“读取”的值来管理用户操作。
在我的例子中,我可以做什么来轻松检索写/读属性的真/假值
作为RoR的新手,我在互联网上搜索,发现了一些可能不需要达到我的目标的东西:序列化数据,将字符串转换为数组,然后在其中搜索。对于这两个备选方案(如果它们有效的话),我不知道如何继续
注意:这是管理用户权限的安全方法吗?有没有更好的方法来完成我想要的任务?首先,您应该将文本列至少分为两列,以便该表如下所示:
(user_id, action, is_permitted)
甚至,
(user_id, action_id, is_permitted)
您可以采取另一种可能的方法,但前提是操作集是固定的:
(user_id, action1_permitted, action2_permitted ...)
我真的不知道这是否是一个好方法,但我认为值得在这里参考 我会将权限存储为整数而不是字符串。该值取决于写入值和读取值。所以写是第一位,读是第二位(用二进制的整数表示,因为它们仅为true和false) 所以
因此,如果您想搜索具有读取权限但没有写入权限的用户,只需按值
2
搜索您不使用迁移的原因是什么?通常的Rails程序是生成一个模型:
script/generate model Permission user_id:integer action:string is_permitted:boolean
然后迁移数据库以创建表。然后将表与用户关联(用户拥有许多权限) 我会采取不同的方法,根据我的需要使用已经存在的东西:
- 基本用户权限:
- 更高级的粒度需求:——
- 完整的模块化解决方案:——
一个可以根据您的需要调整角色的示例。我想我将使用您建议我的第三个选项:(用户id、允许操作1、允许操作2…)。唯一的疑问是,我可以有一个包含许多列的表,每个列对应与每个对象相关的每个操作!这就是为什么我想处理原始问题中描述的操作。
script/generate model Permission user_id:integer action:string is_permitted:boolean