Sha256: 4d2ea8310b4315e08792a0847373d5931cd6a0b54b2fadec61088aac096566f8

Contents?: true

Size: 1.63 KB

Versions: 15

Compression:

Stored size: 1.63 KB

Contents

require 'roles_mongoid/strategy/single'

module RoleStrategy::Mongoid
  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 role_attribute
        strategy_class.roles_attribute_name.to_sym
      end       

      def role_attribute_id
        "#{role_attribute}_id"
      end       
         
      def in_role(role_name)      
        in_any_role(role_name)
      end

      def in_any_role(*role_names)
        begin                       
          the_roles = Role.where(:name.in => role_names.to_strings).to_a 
          role_ids = the_roles.map(&:_id).map(&:to_s)
          where(:"#{role_attribute_id}".in => role_ids)
        rescue 
          return []
        end
      end  
    end

    module Implementation  
      include Roles::Mongoid::Strategy::Single 
      
      def new_role role
        role_class.find_role(extract_role role)        
      end  
      
      def new_roles *roles
        new_role roles.flatten.first
      end     
      
      def present_roles *roles
        roles.map{|role| extract_role role}
      end                 
      
      def set_empty_role
        self.send("#{role_attribute}=", nil)
      end

      def select_valid_roles *role_names
        role_names = role_names.flat_uniq.select{|role| valid_role? role }
        has_role_class? ? role_class.find_roles(role_names).to_a : role_names
      end      
    end

    extend Roles::Generic::User::Configuration
    configure :num => :single, :type => :role_class    
  end  
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
roles_mongoid-0.4.8 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid_zhd-0.4.8 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.7 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.6 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.5 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.4 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.3 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.2 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.1 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.4.0 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.3.6 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.3.5 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.3.4 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.3.3 lib/roles_mongoid/strategy/single/one_role.rb
roles_mongoid-0.3.2 lib/roles_mongoid/strategy/single/one_role.rb