Sha256: 4379090d7f807f7a2c45bc03c59cc465aefb484127436b4d4506ec706491b1c9

Contents?: true

Size: 564 Bytes

Versions: 1

Compression:

Stored size: 564 Bytes

Contents

module Guise
  module Introspection

    def has_role?(name)
      name = name.to_s.classify

      if !self.class.guises.include?(name)
        raise NameError, "no such guise #{name}"
      end

      guises.map(&guise_attribute).include?(name)
    end

    def has_any_roles?(*names)
      names.map(&method(:has_role?)).any?
    end

    def has_roles?(*names)
      names.map(&method(:has_role?)).all?
    end

    protected

    def guise_attribute
      self.class.guise_attribute
    end

    def guise_table
      self.class.guise_table
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
guise-0.2.3 lib/guise/introspection.rb