diff options
Diffstat (limited to 'app/models/group.rb')
-rw-r--r-- | app/models/group.rb | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/app/models/group.rb b/app/models/group.rb index 0b36c934375..0cc3a3a0f41 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -16,14 +16,12 @@ class Group < Namespace has_many :users_groups, dependent: :destroy has_many :users, through: :users_groups - after_create :add_owner - def human_name name end def owners - @owners ||= (users_groups.owners.map(&:user) << owner).uniq + @owners ||= users_groups.owners.map(&:user) end def add_users(user_ids, group_access) @@ -36,20 +34,19 @@ class Group < Namespace self.users_groups.create(user_id: user.id, group_access: group_access) end - def change_owner(user) - self.owner = user - membership = users_groups.where(user_id: user.id).first + def add_owner(user) + self.add_user(user, UsersGroup::OWNER) + end - if membership - membership.update_attributes(group_access: UsersGroup::OWNER) - else - add_owner - end + def has_owner?(user) + owners.include?(user) end - private + def last_owner?(user) + has_owner?(user) && owners.size == 1 + end - def add_owner - self.add_users([owner.id], UsersGroup::OWNER) + def members + users_groups end end |