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.



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

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

Instance Method Details

#name_fromObject



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

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

#name_toObject



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

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

#query(column) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/query_filter/utils/scope_range.rb', line 36

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

#valid?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/query_filter/utils/scope_range.rb', line 32

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

#value_fromObject



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

def value_from
  @options[name_from]
end

#value_toObject



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

def value_to
  @options[name_to]
end