ruby-on-rails - 在ActiveRecord中按位掩码搜索

标签 ruby-on-rails activerecord bitmask

我有一个用户表,其中有一个位掩码字段,其中包含一个权限掩码。在本地,我可以通过执行位掩码(UserPermissions&Perm)==Perm来确定用户是否具有一定的权限。但是,我希望能够发出find_by_mask或类似的东西,也许使用:conditions,但是我似乎无法找出如何查询数据库以检索具有匹配权限掩码的用户列表。

使用ActiveRecord有什么想法吗?

具体来说,这必须使用sqlite和postgres

最佳答案

我认为,理智的做法是将您的bitmask字段分解为一系列 bool 字段。在关系数据库中存储位掩码与在字段中存储定界列表相距不远-这是边界非规范化。

就是说,您可以在SQL查询中使用&运算符使用按位与,因此您可以说:

User.where('permissions & ? > 0', Perm)

关于ruby-on-rails - 在ActiveRecord中按位掩码搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3384875/

相关文章:

ruby-on-rails - 在 1.x 和 2.x 之间对 Rails 的更改中,哪些确实影响了您在 Rails 中的工作?

ruby-on-rails - 哪种 Web 开发框架最适合 Google App Engine?

mysql - Yii2 使用子查询而不是带有 id 的数组进行急切加载

c - 定义一些东西 ('w' << 8)

c - 如何将变量合并到位掩码中?

ruby-on-rails - 尝试在 Rails 测试中使用自定义类时出现未初始化常量

ruby-on-rails - Sunspot solr, order_by 整数值彻底坏掉

sql - ActiveRecord 通过模型的数组属性查找包含一个值(不是关联数组)

ruby-on-rails - 如何使用 Ruby on Rails 查找今天、昨天等的记录?

c - 查找寄存器较高位置和较低位置的掩码值