Sha256: f899443cfac563fe6d3978659231a16f3bec6a53fbdbf8e8e8f789edf7bdc956

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

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

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

    has_many :users
    
    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

1 entries across 1 versions & 1 rubygems

Version Path
goldberg_generator-0.2.2 templates/vendor/plugins/goldberg/app/models/goldberg/role.rb