Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby中的比特屏蔽方案_Ruby On Rails_Ruby_Bit Manipulation_Bitmask - Fatal编程技术网

Ruby on rails Ruby中的比特屏蔽方案

Ruby on rails Ruby中的比特屏蔽方案,ruby-on-rails,ruby,bit-manipulation,bitmask,Ruby On Rails,Ruby,Bit Manipulation,Bitmask,我正在尝试实现一个简单的用例,在这个用例中,我需要将注释仅限于其中提到的那些用户。我试图在ruby中使用位屏蔽来控制访问。我正在使用数据库中存储的用户“id”值来计算二进制值 例如,例如example1@example.com的id为140,我执行2**140并存储哈希。如果值不为零,我通过对哈希执行位and(&)来允许访问。请检查此链接: 现在,问题是当我有更大的id值时(很明显,如果id列是bigint,那么位屏蔽就是一个大禁忌)。这个问题有什么解决方案吗?如果没有位映射,除了中间的规范化表

我正在尝试实现一个简单的用例,在这个用例中,我需要将注释仅限于其中提到的那些用户。我试图在ruby中使用位屏蔽来控制访问。我正在使用数据库中存储的用户“id”值来计算二进制值

例如,例如example1@example.com的id为140,我执行2**140并存储哈希。如果值不为零,我通过对哈希执行位and(&)来允许访问。请检查此链接:


现在,问题是当我有更大的id值时(很明显,如果id列是bigint,那么位屏蔽就是一个大禁忌)。这个问题有什么解决方案吗?如果没有位映射,除了中间的规范化表之外,如何处理这个用例

“除了中间规范化表之外,还可以如何处理此用例?”-在通用RDBMS中,它不能。使用n:m关系并向前看。“更大的id值”?
2**140
已经超过了。@Stefan我的意思是,如果“id”列是bigint,则位屏蔽是一个大的禁忌。(但是2**140可以存储在文本列中。)我的观点是,计算幂甚至是不可能的。使用n:m.@vijay的中间规范化表(因为我没有其他选择)是正确的,但与列类型无关。如果用户超过64个(或者更准确地说,用户ID>64),位掩码将超过BIGINT。”除了中间规范化表之外,还可以如何处理此用例?”-在通用RDBMS中,它不能。使用n:m关系并向前看。“更大的id值”?
2**140
已经超过了。@Stefan我的意思是,如果“id”列是bigint,则位屏蔽是一个大的禁忌。(但是2**140可以存储在文本列中。)我的观点是,计算幂甚至是不可能的。使用n:m.@vijay的中间规范化表(因为我没有其他选择)是正确的,但与列类型无关。如果用户超过64个(或者更准确地说,用户ID>64),位掩码将超过BIGINT。