Class: ScopedSearch::QueryBuilder::OracleEnhancedAdapter
- Inherits:
-
ScopedSearch::QueryBuilder
- Object
- ScopedSearch::QueryBuilder
- ScopedSearch::QueryBuilder::OracleEnhancedAdapter
- Defined in:
- lib/scoped_search/oracle_enhanced.rb
Overview
The Oracle adapter also requires some tweaks to make the case insensitive LIKE work.
Instance Method Summary collapse
-
#sql_test(field, operator, value, lhs, &block) ⇒ Object
:yields: finder_option_type, value.
Instance Method Details
#sql_test(field, operator, value, lhs, &block) ⇒ Object
:yields: finder_option_type, value
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/scoped_search/oracle_enhanced.rb', line 18 def sql_test(field, operator, value, lhs, &block) # :yields: finder_option_type, value if field.key_field yield(:parameter, lhs.sub(/^.*\./,'')) end if field.textual? && [:like, :unlike].include?(operator) yield(:parameter, (value !~ /^\%|\*/ && value !~ /\%|\*$/) ? "%#{value}%" : value.to_s.tr_s('%*', '%')) return "LOWER(#{field.to_sql(operator, &block)}) #{self.sql_operator(operator, field)} LOWER(?)" elsif field.temporal? return datetime_test(field, operator, value, &block) else yield(:parameter, value) return "#{field.to_sql(operator, &block)} #{self.sql_operator(operator, field)} ?" end end |