Sha256: da188d02e3787916819d09da4b0aab985a68ad1d707020efd9f1553673113c92

Contents?: true

Size: 847 Bytes

Versions: 4

Compression:

Stored size: 847 Bytes

Contents

class RoleGroup
  attr_accessor :name, :roles
  
  def initialize options = {}
    name = options[:name].to_sym
    raise ArgumentError, "Not a valid role label, was: #{name}" if !name.kind_of_label?
    @name = name
    @roles = options[:roles]
    RoleGroup.role_groups << self if !RoleGroup.exists?(name)
  end
  
  class << self 
    def all
      role_groups
    end
    
    def create options = {}
      self.new options 
    end
    
    def role_groups= *names
      @role_groups = names.flatten
    end

    def role_groups
      @role_groups ||= Set.new
    end

    def exists? name
      !where(:name => name.to_sym).empty?
    end

    def where options = {}
      names = [options[:name]].flatten
      RoleGroup.role_groups.select {|r| names.include?(r.name.to_sym) }
    end  
  end
end 

class Array
  def all
    self
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
troles-0.6.1 spec/trole_groups/generic/models/role_group.rb
troles-0.6.0 spec/trole_groups/generic/models/role_group.rb
troles-0.5.2 spec/trole_groups/generic/models/role_group.rb
troles-0.5.1 spec/trole_groups/generic/models/role_group.rb