user_group.rb 897 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. class UserGroup < ApplicationModel
  3. self.table_name = 'groups_users'
  4. self.primary_keys = :user_id, :group_id, :access
  5. belongs_to :user
  6. belongs_to :group
  7. validates :access, presence: true
  8. def self.ref_key
  9. :user_id
  10. end
  11. def cache_update
  12. group.cache_update(nil)
  13. user.cache_update(nil)
  14. super
  15. end
  16. def cache_delete
  17. group.cache_update(nil)
  18. user.cache_update(nil)
  19. super
  20. end
  21. private
  22. def validate_access
  23. query = self.class.where(group: group, user: user)
  24. query = if access == 'full'
  25. query.where.not(access: 'full')
  26. else
  27. query.where(access: 'full')
  28. end
  29. errors.add(:access, 'User can have full or granular access to group') if query.exists?
  30. end
  31. validate :validate_access
  32. end