Sha256: 22cafc4dee3bb9dca631eec8c09e3aa1e02872b6b5ff89d1a2331d7711066450

Contents?: true

Size: 869 Bytes

Versions: 3

Compression:

Stored size: 869 Bytes

Contents

module SimpleRoles
  module Many
    module Persistence
      class << self
        def included base
          base.class_eval %{ 
            has_many :user_roles
            has_many :roles, :through => :user_roles
          }
        end
      end

      def roles
        super.map(&:name).map(&:to_sym)
      end

      def roles= *rolez
        rolez = rolez.flatten.map(&:to_sym)

        super retrieve_roles(rolez)
      end

      private

      def retrieve_roles rolez
        raise "Not a valid role!" if (rolez - config.valid_roles).size > 0

        rolez.map do |rolle|
          begin
            Role.find_by_name! rolle.to_s
          rescue
            raise "Couldn't find Role for #{rolle}. Maybe you need to re-run migrations?"
          end
        end
      end

      def config
        SimpleRoles::Configuration
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
simple_roles-0.0.12 lib/simple_roles/many/persistence.rb
simple_roles-0.0.11 lib/simple_roles/many/persistence.rb
simple_roles-0.0.10 lib/simple_roles/many/persistence.rb