myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2191] branches/event_logging/app/models: Model i


From: noreply
Subject: [myexperiment-hackers] [2191] branches/event_logging/app/models: Model improvements from trunk.
Date: Fri, 8 May 2009 12:32:35 -0400 (EDT)

Revision
2191
Author
dtm
Date
2009-05-08 12:32:35 -0400 (Fri, 08 May 2009)

Log Message

Model improvements from trunk.

svn merge -r 2152:2153 svn+ssh://address@hidden/var/svn/myexperiment/trunk
svn merge -r 2182:2183 svn+ssh://address@hidden/var/svn/myexperiment/trunk
svn merge -r 2186:2187 svn+ssh://address@hidden/var/svn/myexperiment/trunk

Modified Paths

Diff

Modified: branches/event_logging/app/models/network.rb (2190 => 2191)


--- branches/event_logging/app/models/network.rb	2009-05-08 16:07:44 UTC (rev 2190)
+++ branches/event_logging/app/models/network.rb	2009-05-08 16:32:35 UTC (rev 2191)
@@ -121,13 +121,13 @@
                           
   alias_method :original_members, :members
   def members(incl_owner=true)
-    rtn = incl_owner ? [User.find(owner.id)] : []
-    
-    original_members(force_reload = true).each do |m|
-      rtn << User.find(m.user_id)
-    end
-    
-    return rtn
+    explicit_members = User.find(:all,
+                                 :select     => "users.*",
+                                 :joins      => "JOIN memberships m on (users.id = m.user_id)",
+                                 :conditions => [ "m.network_id=? AND m.user_established_at IS NOT NULL AND m.network_established_at IS NOT NULL", id ],
+                                 :order      => "GREATEST(m.user_established_at, m.network_established_at) DESC"
+                                )
+    return incl_owner ? ( [owner] + explicit_members ) : explicit_members
   end
                           
   def member?(userid)

Modified: branches/event_logging/app/models/user.rb (2190 => 2191)


--- branches/event_logging/app/models/user.rb	2009-05-08 16:07:44 UTC (rev 2190)
+++ branches/event_logging/app/models/user.rb	2009-05-08 16:32:35 UTC (rev 2191)
@@ -394,9 +394,11 @@
   end
   
   def friends
-    (friends_of_mine + friends_with_me).uniq.sort { |a, b|
-      a.name.downcase <=> b.name.downcase
-    }
+    User.find(:all,
+              :select => "users.*",
+              :joins => "JOIN friendships f ON (users.id = f.friend_id OR users.id = f.user_id)",
+              :conditions => ["(f.user_id = ? OR f.friend_id = ?) AND (f.accepted_at IS NOT NULL) AND (users.id <> ?)", id, id, id],
+              :order => "lower(users.name)" )
   end
   
   has_and_belongs_to_many :networks,
@@ -406,13 +408,11 @@
                           
   alias_method :original_networks, :networks
   def networks
-    rtn = []
-    
-    original_networks(force_reload = true).each do |n|
-      rtn << Network.find(n.network_id)
-    end
-    
-    return rtn
+    Network.find(:all,
+                 :select => "networks.*",
+                 :joins => "JOIN memberships m ON (networks.id = m.network_id)",
+                 :conditions => ["m.user_id=? AND m.user_established_at is NOT NULL AND m.network_established_at IS NOT NULL", id],
+                 :order => "GREATEST(m.user_established_at, m.network_established_at) DESC" )
   end
                           
   has_many :networks_owned,
@@ -539,17 +539,12 @@
   # 1) the ID of a user (of 2 involved in the 'friendship') who is a 'friend', not an owner of the friendship;
   # 2) the 'friendship' object itself
   def friendship_from_self_id_and_friends_id(friend_id)
-    friendship = Friendship.find(:first, :conditions => [ "user_id = ? AND friend_id = ?", id, friend_id ] )
+    friendship = Friendship.find(:first, :conditions => [ "( (user_id = ? AND friend_id = ?) OR ( user_id = ? AND friend_id = ? ) )", id, friend_id, friend_id, id ] )
     
     if friendship
       return [friend_id, friendship]
-    elsif
-      friendship = Friendship.find(:first, :conditions => [ "user_id = ? AND friend_id = ?", friend_id, id ] )
-      if friendship
-        return [id, friendship]
-      else
-        return [nil, nil] # an error state
-      end
+    else
+      return [nil, nil] # an error state
     end
   end
   

reply via email to

[Prev in Thread] Current Thread [Next in Thread]