class FuzzyWhere::FuzzyDerivation

Class to take a column and a fuzzy predicate and return the equivalent standard query

Attributes

query[R]

@!attribute [r] query

@return [ActiveRecord_Relation] the current standard query

Public Class Methods

new(query, table, column, fuzzy_predicate) click to toggle source

New FuzzyDerivation intance @param query [ActiveRecord_Relation] query to append @param table [String] table name @param column [String] column name @param fuzzy_predicate [Hash] fuzzy predicate

# File lib/fuzzy_where/fuzzy_derivation.rb, line 15
def initialize(query, table, column, fuzzy_predicate)
  @table = table
  @query = query
  @column = column
  @fuzzy_predicate = fuzzy_predicate
end

Public Instance Methods

derivative_condition() click to toggle source

Take instance attributtes and return a derivated query @return [ActiveRecord_Relation] the current standard query

# File lib/fuzzy_where/fuzzy_derivation.rb, line 24
def derivative_condition
  min = @fuzzy_predicate[:min]
  max = @fuzzy_predicate[:max]

  increasing_conditions(min) if min && min != 'infinite'.freeze
  decreasing_conditions(max) if max && max != 'infinite'.freeze
  @query
end

Private Instance Methods

decreasing_conditions(max) click to toggle source
# File lib/fuzzy_where/fuzzy_derivation.rb, line 39
def decreasing_conditions(max)
  @query = @query.where("#{@table}.#{@column} < ?", max)
end
increasing_conditions(min) click to toggle source
# File lib/fuzzy_where/fuzzy_derivation.rb, line 35
def increasing_conditions(min)
  @query = @query.where("#{@table}.#{@column} > ?", min)
end