Sha256: c45304727c60ae466e0ebcaaa7f736be66f344e57e8be0f3ba17c1051ecdeb65

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

module Roles::Base
  def valid_roles_are(*role_list)
    strategy_class.valid_roles = role_list.to_symbols
  end
end

module Roles
  module Mongoid  
    def self.included(base) 
      base.extend Roles::Base
      base.extend ClassMethods
      base.orm_name = :mongoid
    end

    module ClassMethods
      
      MAP = {
        :admin_flag   => "field :admin_flag, :type => Boolean",
        
        :many_roles   => "references_many :many_roles, :stored_as => :array, :class_name => 'Role'",
        :one_role     => "referenced_in :one_role, :class_name => 'Role'",

        :roles_mask   => "field :roles_mask, :type => Integer, :default => 0",
        :role_string  => "field :role_string, :type => String",
        :role_strings => "field :role_strings, :type => Array",
        :roles_string => "field :roles_string, :type => String"
      }
      
      def strategy name, options=nil
        if options == :default && MAP[name]
          instance_eval MAP[name] 
        end
        set_role_strategy name, options
      end    
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
roles_mongoid-0.3.1 lib/roles_mongoid/base.rb