Sha256: 9c021bf3841ae33669421ae931b0ce496add171ddeb5ce5de75edb23573baef6
Contents?: true
Size: 1.27 KB
Versions: 4
Compression:
Stored size: 1.27 KB
Contents
# @author Kristian Mandrup # # Many role storage for storing roles as an Integer bitmask on the role subject # # @note all methods potentially operate directly on values in the data store # module Troles::Storage class BitMany < BaseMany # constructor # @param [Object] the role subject def initialize role_subject super end # display the roles as a list of symbols # see Troles::Marshaller::Bitmask # @return [Array<Symbol>] roles list def display_roles return [] if !ds_field_value? bitmask.read end def ds_field_value? ds_field_value == 0 end # saves the roles for the role subject in the data store # see Troles::Marshaller::Bitmask # @param [Array<Symbol>] roles list def set_roles *roles roles = roles.to_symbols_uniq return clear! if roles.empty? set_ds_field bitmask.write(roles.to_symbols) end # Clears the role state of the role subject def clear! set_ds_field 0 end # Sets role to default state def set_default_role! clear! end protected def bitmask @bitmask ||= bitmask_class.new role_subject end def bitmask_class Troles::Common::Marshaller::Bitmask end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
troles-0.6.0 | lib/troles/storage/bit_many.rb |
troles-0.5.2 | lib/troles/storage/bit_many.rb |
troles-0.5.1 | lib/troles/storage/bit_many.rb |
troles-0.5.0 | lib/troles/storage/bit_many.rb |