Ruby on rails 处理表文本列中的数组/哈希

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的新手,我在互联网上搜索,发现了一些可能不需要达到我的目标的东西:序列化数据,将字符串转换为数组,然后在其中搜索。对于这两个备选

我正试图通过以下方式管理用户权限:

在我的数据库中,我创建了一个表,其中有一列名为“permission\u posts”。“permission_posts”中的数据为文本,其内容示例如下:

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