lib/groupify/adapter/mongoid/member_scoped_as.rb
module Groupify
module Mongoid
module MemberScopedAs
extend ActiveSupport::Concern
module ClassMethods
def as(membership_type)
group_ids = criteria.selector["group_ids"]
named_groups = criteria.selector["named_groups"]
criteria = self.criteria
# If filtering by groups or named groups, merge into the group membership criteria
if group_ids || named_groups
elem_match = {as: membership_type}
if group_ids
elem_match.merge!(group_ids: group_ids)
end
if named_groups
elem_match.merge!(named_groups: named_groups)
end
criteria = where(:group_memberships.elem_match => elem_match)
criteria.selector.delete("group_ids")
criteria.selector.delete("named_groups")
else
criteria = where(:"group_memberships.as" => membership_type)
end
criteria
end
end
end
end
end