diff --git a/lib/role_model.rb b/lib/role_model.rb index 1db04ab..95ad3ab 100644 --- a/lib/role_model.rb +++ b/lib/role_model.rb @@ -1,3 +1,4 @@ +require 'role_model/class_methods' require 'role_model/roles' module RoleModel @@ -32,35 +33,4 @@ module RoleModel alias is_an? has_role? end - module ClassMethods - def inherited(subclass) # :nodoc: - ::RoleModel::INHERITABLE_CLASS_ATTRIBUTES.each do |attribute| - instance_var = "@#{attribute}" - subclass.instance_variable_set(instance_var, instance_variable_get(instance_var)) - end - super - end - - # set the bitmask attribute role assignments will be stored in - def roles_attribute(name) - self.roles_attribute = name - end - - # alternative method signature: set the bitmask attribute role assignments will be stored in - def roles_attribute=(name) - self.roles_attribute_name = name.to_sym - end - - # :call-seq: - # roles(:role_1, ..., :role_n) - # roles('role_1', ..., 'role_n') - # roles([:role_1, ..., :role_n]) - # roles(['role_1', ..., 'role_n']) - # - # declare valid roles - def roles(*roles) - self.valid_roles = Array[*roles].flatten.map { |r| r.to_sym } - end - end - end diff --git a/lib/role_model/class_methods.rb b/lib/role_model/class_methods.rb new file mode 100644 index 0000000..6d98c42 --- /dev/null +++ b/lib/role_model/class_methods.rb @@ -0,0 +1,32 @@ +module RoleModel + module ClassMethods + def inherited(subclass) # :nodoc: + ::RoleModel::INHERITABLE_CLASS_ATTRIBUTES.each do |attribute| + instance_var = "@#{attribute}" + subclass.instance_variable_set(instance_var, instance_variable_get(instance_var)) + end + super + end + + # set the bitmask attribute role assignments will be stored in + def roles_attribute(name) + self.roles_attribute = name + end + + # alternative method signature: set the bitmask attribute role assignments will be stored in + def roles_attribute=(name) + self.roles_attribute_name = name.to_sym + end + + # :call-seq: + # roles(:role_1, ..., :role_n) + # roles('role_1', ..., 'role_n') + # roles([:role_1, ..., :role_n]) + # roles(['role_1', ..., 'role_n']) + # + # declare valid roles + def roles(*roles) + self.valid_roles = Array[*roles].flatten.map { |r| r.to_sym } + end + end +end