我有一个用户表,其中有一个位掩码字段,其中包含一个权限掩码。在本地,我可以通过执行位掩码(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/