Sha256: 06b0f2677d16ca07e847b157e692e043c3ab9a1c9f4c686ef3f477defb814c48

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

require 'roles_mongoid/strategy/single'

module RoleStrategy::Mongoid
  module RoleString    
    def self.default_role_attribute
      :role_string
    end

    def self.included base
      base.extend ClassMethods
    end

    module ClassMethods
      def role_attribute
        strategy_class.roles_attribute_name.to_sym
      end       
         
      def in_role(role_name)      
        in_any_role(role_name)
      end

      def in_any_role(*role_names)
        begin                       
          where(:"#{role_attribute}".in => role_names)
        rescue 
          return []
        end
      end  
    end

    
    module Implementation   
      include Roles::Mongoid::Strategy::Single

      def new_role role
        role = role.kind_of?(Array) ? role.first : role
        role.to_s
      end

      def new_roles *roles
        new_role roles.flatten.first
      end
      
      def present_role role
        return role if role.kind_of? Array
        role.split(',').map(&:to_sym)
      end

      def set_empty_role
        self.send("#{role_attribute}=", "")
      end

      alias_method :present_roles, :present_role
      
      # def role_attribute
      #   strategy_class.roles_attribute_name
      # end 
      #             
      # # assign roles
      # def roles=(*roles)
      #   self.role = roles.select_labels.first.to_s
      # end 
      # 
      # def role= role_name
      #   if role_name.kind_of_label? && valid_role?(role_name)
      #     self.send("#{role_attribute}=", role_name.to_s) 
      #   end        
      # end
      # 
      # # query assigned roles
      # def roles
      #   role = self.send(role_attribute)
      #   [role.to_sym]
      # end
      # alias_method :roles_list, :roles
    end

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


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
roles_mongoid-0.3.1 lib/roles_mongoid/strategy/single/role_string.rb