From ac8ec7cb15116799f187cc2c4d58247609a5ea48 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Sun, 26 Jan 2020 22:13:29 +0000 Subject: [PATCH] Add parameters for searching text attributes by array with case insensitivity --- app/models/application_record.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/models/application_record.rb b/app/models/application_record.rb index edf4d3c31..867e6247f 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -80,6 +80,10 @@ class ApplicationRecord < ActiveRecord::Base where("lower(#{qualified_column_for(attr)}::text)::text[] @> ARRAY[?]", values) end + def where_text_includes_lower(attr, values) + where("lower(#{qualified_column_for(attr)}) IN (?)", values) + end + def where_array_count(attr, value) relation = all qualified_column = "cardinality(#{qualified_column_for(attr)})" @@ -192,6 +196,12 @@ class ApplicationRecord < ActiveRecord::Base where(attr => params[:"#{attr}_comma"].split(',')) elsif params[:"#{attr}_space"].present? where(attr => params[:"#{attr}_space"].split(' ')) + elsif params[:"#{attr}_lower_array"].present? + where_text_includes_lower(attr, params[:"#{attr}_lower_array"]) + elsif params[:"#{attr}_lower_comma"].present? + where_text_includes_lower(attr, params[:"#{attr}_lower_comma"].split(',')) + elsif params[:"#{attr}_lower_space"].present? + where_text_includes_lower(attr, params[:"#{attr}_lower_space"].split(' ')) else all end