Class: QueryFilter::Rules::Scope
- Inherits:
-
Object
- Object
- QueryFilter::Rules::Scope
show all
- Defined in:
- lib/query_filter/rules/scope.rb
Constant Summary
collapse
- VALIDATON_KEYS =
[:in, :only, :format, :if, :unless].freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(keys, options = {}) ⇒ Scope
Returns a new instance of Scope.
10
11
12
13
|
# File 'lib/query_filter/rules/scope.rb', line 10
def initialize(keys, options = {})
@keys = Array(keys)
@options = options
end
|
Instance Attribute Details
#keys ⇒ Object
Returns the value of attribute keys.
8
9
10
|
# File 'lib/query_filter/rules/scope.rb', line 8
def keys
@keys
end
|
Instance Method Details
#blank_validation? ⇒ Boolean
15
16
17
|
# File 'lib/query_filter/rules/scope.rb', line 15
def blank_validation?
(@options.keys & VALIDATON_KEYS).empty?
end
|
#can_apply?(target) ⇒ Boolean
47
48
49
50
51
52
53
54
55
|
# File 'lib/query_filter/rules/scope.rb', line 47
def can_apply?(target)
conditions = QueryFilter::Utils::UserConditions.new(target, @options)
if conditions.present?
conditions.passed?
else
valid?(target.params)
end
end
|
#endpoint ⇒ Object
31
32
33
|
# File 'lib/query_filter/rules/scope.rb', line 31
def endpoint
@options[:to] || "#{name}_#{key}"
end
|
#key ⇒ Object
39
40
41
|
# File 'lib/query_filter/rules/scope.rb', line 39
def key
@key ||= @keys.first
end
|
#name ⇒ Object
35
36
37
|
# File 'lib/query_filter/rules/scope.rb', line 35
def name
'scope'.freeze
end
|
#normalize_params(params) ⇒ Object
43
44
45
|
# File 'lib/query_filter/rules/scope.rb', line 43
def normalize_params(params)
params.values_at(*keys)
end
|
#valid?(params) ⇒ Boolean
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/query_filter/rules/scope.rb', line 19
def valid?(params)
values = normalize_params(params)
checks = []
checks << @options[:in].include?(values.first) if @options[:in]
checks << @options[:only].include?(values.first) if @options[:only]
checks << !values.map(&:blank?).all? if blank_validation?
checks << @options[:intersect] & Array.wrap(values) if @options[:intersect]
!checks.empty? && checks.all?
end
|