Module: Bitroles
- Extended by:
- ActiveSupport::Concern
- Included in:
- ActiveRecord::Base
- Defined in:
- lib/bitroles.rb,
lib/bitroles/version.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary
collapse
- VERSION =
"0.0.3"
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_sym, *arguments, &block) ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/bitroles.rb', line 28
def method_missing(method_sym, *arguments, &block)
roles = self.class.roles.join('|')
if method_sym.to_s =~ /^is_(#{roles})\?$/
role? $1
else
super
end
end
|
Instance Method Details
#role?(role) ⇒ Boolean
46
47
48
|
# File 'lib/bitroles.rb', line 46
def role?(role)
roles.include? role.to_s
end
|
#roles ⇒ Object
42
43
44
|
# File 'lib/bitroles.rb', line 42
def roles
self.class.roles.reject { |r| ((send(self.class.mask_column_name) || 0) & 2**self.class.roles.index(r)).zero? }
end
|
#roles=(roles) ⇒ Object
37
38
39
40
|
# File 'lib/bitroles.rb', line 37
def roles=(roles)
roles = (roles.map(&:to_s) & self.class.roles).map { |r| 2**self.class.roles.index(r) }.sum
self.send("#{self.class.mask_column_name}=", roles)
end
|