Sha256: ccdb153ee0ddf5eeeab4b86fb299229d64a2786ea389124bac25b6f65b8ee83e

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

require 'roles_active_record/strategy/single'

module RoleStrategy::ActiveRecord
  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) 
        where(role_attribute => role_name)
      end        
      
      def in_any_role(*role_names)
        where(:role_attribute.in => role_names)
      end      
    end
    
    module Implementation 
      include Roles::ActiveRecord::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
    end

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


Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
roles_active_record-0.3.4 lib/roles_active_record/strategy/single/role_string.rb
roles_active_record-0.3.3 lib/roles_active_record/strategy/single/role_string.rb
roles_active_record-0.3.2 lib/roles_active_record/strategy/single/role_string.rb
roles_active_record-0.3.1 lib/roles_active_record/strategy/single/role_string.rb