Turn Group#owners into a has_many association
This allows the owners to be eager loaded where needed.
This commit is contained in:
parent
a4a85c269a
commit
84e2be5a5f
|
@ -9,6 +9,12 @@ class Group < Namespace
|
|||
has_many :group_members, dependent: :destroy, as: :source, class_name: 'GroupMember'
|
||||
alias_method :members, :group_members
|
||||
has_many :users, -> { where(members: { requested_at: nil }) }, through: :group_members
|
||||
|
||||
has_many :owners,
|
||||
-> { where(members: { access_level: Gitlab::Access::OWNER }) },
|
||||
through: :group_members,
|
||||
source: :user
|
||||
|
||||
has_many :project_group_links, dependent: :destroy
|
||||
has_many :shared_projects, through: :project_group_links, source: :project
|
||||
has_many :notification_settings, dependent: :destroy, as: :source
|
||||
|
@ -88,10 +94,6 @@ class Group < Namespace
|
|||
end
|
||||
end
|
||||
|
||||
def owners
|
||||
@owners ||= group_members.owners.includes(:user).map(&:user)
|
||||
end
|
||||
|
||||
def add_users(user_ids, access_level, current_user = nil)
|
||||
user_ids.each do |user_id|
|
||||
Member.add_user(self.group_members, user_id, access_level, current_user)
|
||||
|
|
|
@ -158,6 +158,18 @@ describe Group, models: true do
|
|||
it { expect(group.has_master?(@members[:requester])).to be_falsey }
|
||||
end
|
||||
|
||||
describe '#owners' do
|
||||
let(:owner) { create(:user) }
|
||||
let(:developer) { create(:user) }
|
||||
|
||||
it 'returns the owners of a Group' do
|
||||
group.add_owner(owner)
|
||||
group.add_developer(developer)
|
||||
|
||||
expect(group.owners).to eq([owner])
|
||||
end
|
||||
end
|
||||
|
||||
def setup_group_members(group)
|
||||
members = {
|
||||
owner: create(:user),
|
||||
|
|
Loading…
Reference in New Issue