module ScopedSearch::QueryBuilder::AST::LeafNode

Defines the to_sql method for AST LeadNodes

Public Instance Methods

to_sql(builder, definition) { |:parameter, p| ... } click to toggle source
    # File lib/scoped_search/query_builder.rb
466 def to_sql(builder, definition, &block)
467   # for boolean fields allow a short format (example: for 'enabled = true' also allow 'enabled')
468   field = definition.field_by_name(value)
469   if field && field.set? && field.complete_value.values.include?(true)
470     key = field.complete_value.map{|k,v| k if v == true}.compact.first
471     sql, *params = builder.set_test(field, :eq, key, &block)
472     params.each { |p| yield(:parameter, p) }
473     return sql
474   end
475   # Search keywords found without context, just search on all the default fields
476   fragments = definition.default_fields_for(value).map do |field|
477     builder.sql_test(field, field.default_operator, value,'', &block)
478   end
479 
480   case fragments.length
481     when 0 then nil
482     when 1 then fragments.first
483     else "#{fragments.join(' OR ')}"
484   end
485 end