Commit 6424ec936e4faa1d236579714efc825939766ce9

Authored by Dmitriy Zaporozhets
1 parent f9b66aec

Refactor user associations. Drop support of Group#owner_id

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing 1 changed file with 10 additions and 13 deletions   Show diff stats
app/models/user.rb
... ... @@ -69,20 +69,22 @@ class User &lt; ActiveRecord::Base
69 69 # Namespace for personal projects
70 70 has_one :namespace, dependent: :destroy, foreign_key: :owner_id, class_name: "Namespace", conditions: 'type IS NULL'
71 71  
72   - # Namespaces (owned groups and own namespace)
73   - has_many :namespaces, foreign_key: :owner_id
74   -
75 72 # Profile
76 73 has_many :keys, dependent: :destroy
77 74  
78 75 # Groups
79   - has_many :own_groups, class_name: "Group", foreign_key: :owner_id
80   - has_many :owned_groups, through: :users_groups, source: :group, conditions: { users_groups: { group_access: UsersGroup::OWNER } }
81   -
82 76 has_many :users_groups, dependent: :destroy
83 77 has_many :groups, through: :users_groups
  78 + has_many :owned_groups, through: :users_groups, source: :group, conditions: { users_groups: { group_access: UsersGroup::OWNER } }
84 79  
85 80 # Projects
  81 + has_many :groups_projects, through: :groups, source: :projects
  82 + has_many :personal_projects, through: :namespace, source: :projects
  83 + has_many :projects, through: :users_projects
  84 + has_many :created_projects, foreign_key: :creator_id, class_name: 'Project'
  85 + has_many :owned_projects, through: :owned_groups, source: :projects
  86 +
  87 +
86 88 has_many :snippets, dependent: :destroy, foreign_key: :author_id, class_name: "Snippet"
87 89 has_many :users_projects, dependent: :destroy
88 90 has_many :issues, dependent: :destroy, foreign_key: :author_id
... ... @@ -93,11 +95,6 @@ class User &lt; ActiveRecord::Base
93 95 has_many :assigned_issues, dependent: :destroy, foreign_key: :assignee_id, class_name: "Issue"
94 96 has_many :assigned_merge_requests, dependent: :destroy, foreign_key: :assignee_id, class_name: "MergeRequest"
95 97  
96   - has_many :groups_projects, through: :groups, source: :projects
97   - has_many :personal_projects, through: :namespace, source: :projects
98   - has_many :projects, through: :users_projects
99   - has_many :own_projects, foreign_key: :creator_id, class_name: 'Project'
100   - has_many :owned_projects, through: :namespaces, source: :projects
101 98  
102 99 #
103 100 # Validations
... ... @@ -247,7 +244,7 @@ class User &lt; ActiveRecord::Base
247 244 # Groups user has access to
248 245 def authorized_groups
249 246 @authorized_groups ||= begin
250   - group_ids = (groups.pluck(:id) + own_groups.pluck(:id) + authorized_projects.pluck(:namespace_id))
  247 + group_ids = (groups.pluck(:id) + authorized_projects.pluck(:namespace_id))
251 248 Group.where(id: group_ids).order('namespaces.name ASC')
252 249 end
253 250 end
... ... @@ -256,7 +253,7 @@ class User &lt; ActiveRecord::Base
256 253 # Projects user has access to
257 254 def authorized_projects
258 255 @authorized_projects ||= begin
259   - project_ids = (owned_projects.pluck(:id) + groups_projects.pluck(:id) + projects.pluck(:id)).uniq
  256 + project_ids = (personal_projects.pluck(:id) + groups_projects.pluck(:id) + projects.pluck(:id)).uniq
260 257 Project.where(id: project_ids).joins(:namespace).order('namespaces.name ASC')
261 258 end
262 259 end
... ...