Class: Pundit::ExpectedAttributeValues::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/pundit/expected_attribute_values/filter.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, constraints, invalid: ExpectedAttributeValues.invalid_behavior, policy: nil) ⇒ Filter

Returns a new instance of Filter.



10
11
12
13
14
15
# File 'lib/pundit/expected_attribute_values/filter.rb', line 10

def initialize(params, constraints, invalid: ExpectedAttributeValues.invalid_behavior, policy: nil)
  @params = params
  @constraints = constraints
  @invalid = invalid
  @policy = policy
end

Class Method Details

.call(params, constraints, invalid: ExpectedAttributeValues.invalid_behavior, policy: nil) ⇒ Object



6
7
8
# File 'lib/pundit/expected_attribute_values/filter.rb', line 6

def self.call(params, constraints, invalid: ExpectedAttributeValues.invalid_behavior, policy: nil)
  new(params, constraints, invalid: invalid, policy: policy).call
end

Instance Method Details

#callObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/pundit/expected_attribute_values/filter.rb', line 17

def call
  return @params if @constraints.empty?

  result = @params.to_unsafe_h.dup
  @constraints.each do |attribute, source|
    key = find_key(result, attribute)
    next unless key
    next unless result.key?(key)

    expected = expected_values_for(attribute, source)
    filter_attribute!(result, key, expected)
  end

  build_parameters(result)
end