Method: Praxis::Extensions::AttributeFiltering::ActiveRecordFilterQueryBuilder.quote_right_part

Defined in:
lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb

.quote_right_part(query:, value:, column_object:, negative:) ⇒ Object



221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/praxis/extensions/attribute_filtering/active_record_filter_query_builder.rb', line 221

def self.quote_right_part(query:, value:, column_object:, negative:)
  conn = query.connection
  if value.nil?
    no = negative ? ' NOT' : ''
    "IS#{no} #{conn.quote_default_expression(value, column_object)}"
  elsif value.is_a?(Array)
    no = negative ? 'NOT ' : ''
    list = value.map { |v| conn.quote_default_expression(v, column_object) }
    "#{no}IN (#{list.join(',')})"
  elsif value.is_a?(Range)
    raise 'TODO!'
  else
    op = negative ? '<>' : '='
    "#{op} #{conn.quote_default_expression(value, column_object)}"
  end
end