module ActiveSet::Filtering::ActiveRecord::QueryValue

Public Instance Methods

query_value() click to toggle source
# File lib/active_set/filtering/active_record/query_value.rb, line 7
def query_value
  return @query_value if defined? @query_value

  query_value = @attribute_instruction.value
  query_value = query_attribute_for(query_value)
  query_value = query_value.downcase if case_insensitive_operation?

  @query_value = query_value
end

Private Instance Methods

query_attribute_for(value) click to toggle source
# File lib/active_set/filtering/active_record/query_value.rb, line 19
def query_attribute_for(value)
  return value unless operator_hash.key?(:query_attribute_transformer)

  context = {
    raw: value,
    sql: to_sql_str(value),
    type: arel_type
  }

  operator_hash[:query_attribute_transformer].call(context)
end
to_sql_str(value) click to toggle source
# File lib/active_set/filtering/active_record/query_value.rb, line 31
def to_sql_str(value)
  return value.map { |a| to_sql_str(a) } if value.respond_to?(:map)

  arel_node = Arel::Nodes::Casted.new(value, arel_column)
  sql_value = arel_node.to_sql
  unwrap_sql_str(sql_value)
end
unwrap_sql_str(sql_str) click to toggle source
# File lib/active_set/filtering/active_record/query_value.rb, line 39
def unwrap_sql_str(sql_str)
  return sql_str unless sql_str[0] == "'" && sql_str[-1] == "'"

  sql_str[1..-2]
end