summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-11-05 16:58:13 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-11-05 16:58:13 +0200
commit6424ec936e4faa1d236579714efc825939766ce9 (patch)
tree85375d59a0ec942b8adaac0e0dc3404269a7c7a3
parentf9b66aecddb248dcd501419e0ee94fd69fab4de3 (diff)
downloadgitlab-ce-6424ec936e4faa1d236579714efc825939766ce9.tar.gz
Refactor user associations. Drop support of Group#owner_id
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--app/models/user.rb23
1 files 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