From 6424ec936e4faa1d236579714efc825939766ce9 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Tue, 5 Nov 2013 16:58:13 +0200
Subject: [PATCH] Refactor user associations. Drop support of Group#owner_id

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/models/user.rb | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/app/models/user.rb b/app/models/user.rb
index df14cf34e85..9d959b5e773 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -69,20 +69,22 @@ class User < ActiveRecord::Base
   # Namespace for personal projects
   has_one :namespace, dependent: :destroy, foreign_key: :owner_id, class_name: "Namespace", conditions: 'type IS NULL'
 
-  # Namespaces (owned groups and own namespace)
-  has_many :namespaces, foreign_key: :owner_id
-
   # Profile
   has_many :keys, dependent: :destroy
 
   # Groups
-  has_many :own_groups, class_name: "Group", foreign_key: :owner_id
-  has_many :owned_groups, through: :users_groups, source: :group, conditions: { users_groups: { group_access: UsersGroup::OWNER } }
-
   has_many :users_groups, dependent: :destroy
   has_many :groups, through: :users_groups
+  has_many :owned_groups, through: :users_groups, source: :group, conditions: { users_groups: { group_access: UsersGroup::OWNER } }
 
   # Projects
+  has_many :groups_projects,          through: :groups, source: :projects
+  has_many :personal_projects,        through: :namespace, source: :projects
+  has_many :projects,                 through: :users_projects
+  has_many :created_projects,         foreign_key: :creator_id, class_name: 'Project'
+  has_many :owned_projects,           through: :owned_groups, source: :projects
+
+
   has_many :snippets,                 dependent: :destroy, foreign_key: :author_id, class_name: "Snippet"
   has_many :users_projects,           dependent: :destroy
   has_many :issues,                   dependent: :destroy, foreign_key: :author_id
@@ -93,11 +95,6 @@ class User < ActiveRecord::Base
   has_many :assigned_issues,          dependent: :destroy, foreign_key: :assignee_id, class_name: "Issue"
   has_many :assigned_merge_requests,  dependent: :destroy, foreign_key: :assignee_id, class_name: "MergeRequest"
 
-  has_many :groups_projects,          through: :groups, source: :projects
-  has_many :personal_projects,        through: :namespace, source: :projects
-  has_many :projects,                 through: :users_projects
-  has_many :own_projects,             foreign_key: :creator_id, class_name: 'Project'
-  has_many :owned_projects,           through: :namespaces, source: :projects
 
   #
   # Validations
@@ -247,7 +244,7 @@ class User < ActiveRecord::Base
   # Groups user has access to
   def authorized_groups
     @authorized_groups ||= begin
-                             group_ids = (groups.pluck(:id) + own_groups.pluck(:id) + authorized_projects.pluck(:namespace_id))
+                             group_ids = (groups.pluck(:id) + authorized_projects.pluck(:namespace_id))
                              Group.where(id: group_ids).order('namespaces.name ASC')
                            end
   end
@@ -256,7 +253,7 @@ class User < ActiveRecord::Base
   # Projects user has access to
   def authorized_projects
     @authorized_projects ||= begin
-                               project_ids = (owned_projects.pluck(:id) + groups_projects.pluck(:id) + projects.pluck(:id)).uniq
+                               project_ids = (personal_projects.pluck(:id) + groups_projects.pluck(:id) + projects.pluck(:id)).uniq
                                Project.where(id: project_ids).joins(:namespace).order('namespaces.name ASC')
                              end
   end
-- 
GitLab