Browse Source

Improved caching if find_fulldata() and reduced data.

Martin Edenhofer 13 years ago
parent
commit
f76af2d2b6
1 changed files with 32 additions and 9 deletions
  1. 32 9
      app/models/user.rb

+ 32 - 9
app/models/user.rb

@@ -58,30 +58,53 @@ class User < ActiveRecord::Base
 
     # get user
     user = User.find(user_id)
+    data = user.attributes
+
 
     # get linked accounts
-    user['accounts'] = {}
+    data['accounts'] = {}
     authorizations = user.authorizations() || []
     authorizations.each do | authorization |
-      user['accounts'][authorization.provider] = {
+      data['accounts'][authorization.provider] = {
         :uid      => authorization[:uid],
         :username => authorization[:username]
       }
     end
   
     # set roles
-    user['roles']         = user.roles.select('id, name').where(:active => true)
-    user['groups']        = user.groups.select('id, name').where(:active => true)
-    user['organization']  = user.organization
-    user['organizations'] = user.organizations.select('id, name').where(:active => true)
+    roles = []
+    user.roles.select('id, name').where( :active => true ).each { |role|
+      roles.push role
+    }
+    data['roles'] = roles
+
+    groups = []
+    user.groups.select('id, name').where( :active => true ).each { |group|
+      groups.push group
+    }
+    data['groups'] = groups
+    
+    organization = user.organization
+    data['organization'] = organization
+
+    organizations = []
+    user.organizations.select('id, name').where( :active => true ).each { |organization|
+      organizations.push organization
+    }
+    data['organizations'] = organizations
 
-    @@cache[user_id] = user
+    @@cache[user_id] = data
 
-    return user
+    return data
   end
-  
+
+  def cache_reset
+    @@cache[self.id] = nil
+  end
+      
   private
     def delete_cache
+      puts 'delete_cache', self.insepct
       @@cache[self.id] = nil
     end