class BasicGroupSerializer < ApplicationSerializer attributes :id, :automatic, :name, :user_count, :alias_level, :visible, :automatic_membership_email_domains, :automatic_membership_retroactive, :primary_group, :title, :grant_trust_level, :incoming_email, :notification_level, :has_messages, :is_member, :mentionable def include_incoming_email? scope.is_staff? end def notification_level # TODO: fix this N+1 GroupUser.where(group_id: object.id, user_id: scope.user.id).first.try(:notification_level) end def include_notification_level? scope.authenticated? end def mentionable object.mentionable?(scope.user, object.id) end def is_member scope.is_admin? || GroupUser.where(group_id: object.id, user_id: scope.user.id).present? end def include_is_member? scope.authenticated? end end