Class: QueryFilter::Utils::ScopeRange

Inherits:
Object
  • Object
show all
Defined in:
lib/query_filter/utils/scope_range.rb

Overview

Usage:

range = Utils::ScopeRange.new(:orders, { orders_from: 1, orders_to: 44 })
range.query('orders_count')

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ ScopeRange

Returns a new instance of ScopeRange.



8
9
10
11
# File 'lib/query_filter/utils/scope_range.rb', line 8

def initialize(name, options = {})
  @name = name
  @options = options
end

Instance Method Details

#name_fromObject



13
14
15
# File 'lib/query_filter/utils/scope_range.rb', line 13

def name_from
  @name_from ||= "#{@name}_from".to_sym
end

#name_toObject



17
18
19
# File 'lib/query_filter/utils/scope_range.rb', line 17

def name_to
  @name_to ||= "#{@name}_to".to_sym
end

#query(column) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/query_filter/utils/scope_range.rb', line 33

def query(column)
  if value_from.present? && value_to.present?
    ["#{column} BETWEEN ? AND ?", value_from, value_to]
  elsif value_from.present?
    ["#{column} >= ?", value_from]
  elsif value_to.present?
    ["#{column} <= ?", value_to]
  end
end

#valid?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/query_filter/utils/scope_range.rb', line 29

def valid?
  @options && (value_from.present? || value_to.present?)
end

#value_fromObject



21
22
23
# File 'lib/query_filter/utils/scope_range.rb', line 21

def value_from
  @options[name_from]
end

#value_toObject



25
26
27
# File 'lib/query_filter/utils/scope_range.rb', line 25

def value_to
  @options[name_to]
end