Sha256: 0c433830a94861efeb8637634ea6204cf36aa90f2ee67c34dc675182045224ce
Contents?: true
Size: 1.47 KB
Versions: 9
Compression:
Stored size: 1.47 KB
Contents
# frozen_string_literal: true module Mongoid class Criteria module Permission [:all, :all_in, :and, :all_of, :between, :elem_match, :exists, :gt, :gte, :in, :any_in, :lt, :lte, :max_distance, :mod, :ne, :excludes, :near, :near_sphere, :nin, :not_in, :nor, :negating?, :not, :or, :any_of, :with_size, :with_type, :where, :within_box, :within_circle, :within_polygon, :within_spherical_circle ].each do |method| define_method(method) do |*criteria| raise Errors::CriteriaNotPermitted.new(klass, method, criteria) unless should_permit?(criteria) super(*criteria) end end private # Ensure that the criteria are permitted. # # @example Ignoring ActionController::Parameters # should_permit?({_id: ActionController::Parameters.new("$size" => 1)}) # # @api private # # @param [ Object ] criteria # @return [ Boolean ] if should permit def should_permit?(criteria) if criteria.respond_to?(:permitted?) return criteria.permitted? elsif criteria.respond_to?(:each) criteria.each do |criterion| return false unless should_permit?(criterion) end end true end end end end
Version data entries
9 entries across 9 versions & 1 rubygems