Beat knocking in a ruby

I want to create a bit that will contain security permissions for this user.

In C #, I would do this by creating an enumeration, and then I would beat the binary value a bit by adding '& &' to see if it would result in a TRUE value.

How can I do this best in Ruby?

+4
source share
3 answers

If the core value is important, you can create a module that you use as enum

module Groups ADMIN = 1 BOSS = 2 CLERK = 4 MEAT = 8 BREAD = 16 CHEESE = 32 end 

To set permissions only bitwise or together

 permissions = Groups::BOSS | Groups::MEAT | Groups::CHEESE 

and to check that you are doing bitwise and

 >> permissions & Groups::CHEESE > 0 => true >> permissions & Groups::BREAD > 0 => false 

I also like how you can make real bitmasks more readable with _ like this

 permissions = 0b0010_1010 
+13
source

Bitwse operations are trivial in Ruby.

 > 1 | 2 # Create a bitmask from permission 2^0 + 2^1 => 3 > 3 & 1 == 1 # See if the bitmask contains the 2^0 permission => true > 3 & 4 == 4 # See if the bitmask contains the 2^2 permission => false 
+4
source

Ryan Bates talks about using bitwise operations to embed associations in this podcast . You can read the text version here .

+1
source

All Articles