1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
- class UserGroup < ApplicationModel
- self.table_name = 'groups_users'
- self.primary_keys = :user_id, :group_id, :access
- belongs_to :user
- belongs_to :group
- validates :access, presence: true
- def self.ref_key
- :user_id
- end
- def cache_update
- group.cache_update(nil)
- user.cache_update(nil)
- super
- end
- def cache_delete
- group.cache_update(nil)
- user.cache_update(nil)
- super
- end
- private
- def validate_access
- query = self.class.where(group: group, user: user)
- query = if access == 'full'
- query.where.not(access: 'full')
- else
- query.where(access: 'full')
- end
- errors.add(:access, 'User can have full or granular access to group') if query.exists?
- end
- validate :validate_access
- end
|