Sha256: d7bad718c3a76aa11a0cf464b74663a743437ea754e853e5c583fc4093e32abe

Contents?: true

Size: 875 Bytes

Versions: 3

Compression:

Stored size: 875 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.to_symbols!.flatten!

        super retrieve_roles(rolez)

        save!
      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.8 lib/simple_roles/many/persistence.rb
simple_roles-0.0.7 lib/simple_roles/many/persistence.rb
simple_roles-0.0.6 lib/simple_roles/many/persistence.rb