Sha256: 0b41d323f49691dc082b6e315dfaebffebdf9a6a88e76831e52f75cda16ac495

Contents?: true

Size: 1.36 KB

Versions: 96

Compression:

Stored size: 1.36 KB

Contents

require "goldberg/credentials"
require "goldberg/menu"

module Goldberg
  class Role < ActiveRecord::Base
    include Goldberg::Model

    has_many :users, :class_name => 'Goldberg::User'
    
    validates_presence_of :name
    validates_uniqueness_of :name

    serialize :cache

    class << self
      def Role.rebuild_cache
        roles = Role.find(:all)
        
        for role in roles do
        role.cache = nil ; role.save # we have to do this to clear it
          
          role.cache = Hash.new
          role.rebuild_credentials
          role.rebuild_menu
          role.save
        end
      end
    end  # class << self
      
    def rebuild_credentials
      self.cache[:credentials] = Credentials.new(self.id)
    end

    def rebuild_menu
      menu = Menu.new(self)
      self.cache[:menu] = menu
    end

    def get_parents
      parents = Array.new
      seen = Hash.new

      current = self.id
      
      while current
        role = Role.find(current)
        if role 
          if not seen.has_key?(role.id)
            parents << role
            seen[role.id] = true
            current = role.parent_id
          else
            current = nil
          end
        else
          current = nil
        end
      end

      return parents
    end

    def get_start_path
      self.start_path || Goldberg.settings.get_start_path
    end
    
  end
end

Version data entries

96 entries across 96 versions & 1 rubygems

Version Path
six-updater-web-0.24.15 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.14 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.13 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.12 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.11 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.10 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.9 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.8 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.7 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.6 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.5 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.4 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.3 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.2 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.1 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.24.0 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.23.7 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.23.6 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.23.5 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb
six-updater-web-0.23.4 lib/six-updater-web/vendor/plugins/goldberg/app/models/goldberg/role.rb