Sha256: 0ac70d77255802de7bd5f0f649b3e09caf161a2edf4a0ea5ba7fe352d8134fc4
Contents?: true
Size: 1.44 KB
Versions: 3
Compression:
Stored size: 1.44 KB
Contents
require 'roles_active_record/strategy/single' module RoleStrategy::ActiveRecord module OneRole def self.default_role_attribute :one_role end def self.included base base.extend Roles::Generic::Role::ClassMethods base.extend ClassMethods end module ClassMethods def in_role(role_name) in_any_role(role_name) end def in_any_role(*role_names) matching_roles = Role.named(role_names) User.where(:role_id => matching_roles.map(&:id)) end end module Implementation include Roles::ActiveRecord::Strategy::Single def set_role role # set_empty_role role = role.first if role.kind_of? Array # puts "set_role: #{role.inspect}" self.send("#{role_attribute}=", role) # role.users << self end alias_method :set_roles, :set_role def new_role role role_class.find_role(extract_role role) end def new_roles *roles new_role roles.flatten.first end def remove_roles *role_names roles = role_names.flat_uniq set_empty_role if roles_diff(roles).empty? true end def present_roles *roles roles.map{|role| extract_role role} end def set_empty_role self.send("#{role_attribute}=", nil) end end extend Roles::Generic::User::Configuration configure :num => :single, :type => :role_class end end
Version data entries
3 entries across 3 versions & 1 rubygems