move RoleModel::ClassMethods into separate file

This commit is contained in:
Martin Rehfeld 2010-05-30 22:28:06 +02:00
parent 35c7ed502c
commit be80b7e106
2 changed files with 33 additions and 31 deletions

View file

@ -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

View file

@ -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