Refactor user associations. Drop support of Group#owner_id
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
f9b66aecdd
commit
6424ec936e
1 changed files with 10 additions and 13 deletions
|
@ -69,20 +69,22 @@ class User < ActiveRecord::Base
|
||||||
# Namespace for personal projects
|
# Namespace for personal projects
|
||||||
has_one :namespace, dependent: :destroy, foreign_key: :owner_id, class_name: "Namespace", conditions: 'type IS NULL'
|
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
|
# Profile
|
||||||
has_many :keys, dependent: :destroy
|
has_many :keys, dependent: :destroy
|
||||||
|
|
||||||
# Groups
|
# 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 :users_groups, dependent: :destroy
|
||||||
has_many :groups, through: :users_groups
|
has_many :groups, through: :users_groups
|
||||||
|
has_many :owned_groups, through: :users_groups, source: :group, conditions: { users_groups: { group_access: UsersGroup::OWNER } }
|
||||||
|
|
||||||
# Projects
|
# 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 :snippets, dependent: :destroy, foreign_key: :author_id, class_name: "Snippet"
|
||||||
has_many :users_projects, dependent: :destroy
|
has_many :users_projects, dependent: :destroy
|
||||||
has_many :issues, dependent: :destroy, foreign_key: :author_id
|
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_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 :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
|
# Validations
|
||||||
|
@ -247,7 +244,7 @@ class User < ActiveRecord::Base
|
||||||
# Groups user has access to
|
# Groups user has access to
|
||||||
def authorized_groups
|
def authorized_groups
|
||||||
@authorized_groups ||= begin
|
@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')
|
Group.where(id: group_ids).order('namespaces.name ASC')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -256,7 +253,7 @@ class User < ActiveRecord::Base
|
||||||
# Projects user has access to
|
# Projects user has access to
|
||||||
def authorized_projects
|
def authorized_projects
|
||||||
@authorized_projects ||= begin
|
@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')
|
Project.where(id: project_ids).joins(:namespace).order('namespaces.name ASC')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue