lib/extended_content_scope_helpers.rb

Summary

Maintainability
A
0 mins
Test Coverage
# class methods useful for defining scopes specific to an extended field
# requires that class being extended has been extended with ExtendedContentHelpers
module ExtendedContentScopeHelpers
  def field_condition_sql_for(pattern, field_id, exact_match = false)
    field = ExtendedField.find(field_id)
    xml = Nokogiri::XML::Builder.new

    pattern = "#{pattern}%" unless exact_match

    extended_content_field_xml_tag(
      xml: xml,
      field: field.label_for_params,
      value: pattern,
      xml_element_name: field.xml_element_name,
      xsi_type: field.xsi_type,
      extended_field: field
    )

    look_for_xml = xml.to_xml.lines.collect { |l| l.chomp }[1].downcase
    "LOWER(extended_content) LIKE '%#{look_for_xml}%'"
  end
end