def self.process( key, val, caller )
if val.is_a?( Range )
match_data = key.to_s.match( NOT_IN_RGX )
key = match_data.captures[0] if match_data
fieldname = caller.connection.quote_column_name( key )
min = caller.connection.quote( val.first, caller.columns_hash[ key ] )
max = caller.connection.quote( val.last, caller.columns_hash[ key ] )
str = if val.exclude_end?
"#{match_data ? 'NOT ' : '' }(#{caller.quoted_table_name}.#{fieldname} >= #{min} AND #{caller.quoted_table_name}.#{fieldname} < #{max})"
else
"#{caller.quoted_table_name}.#{fieldname} #{match_data ? 'NOT ' : '' } BETWEEN #{min} AND #{max}"
end
return Result.new( str, nil )
end
nil
end