From 437d689a430cdcbc0390b4b9267ab0166aeac08c Mon Sep 17 00:00:00 2001 From: Ben Ehmke Date: Fri, 20 Sep 2024 09:17:53 -0500 Subject: [PATCH] allow read nil being string --- lib/active_record/filter/predicate_builder_extension.rb | 2 +- test/filter_column_test/string_test.rb | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/active_record/filter/predicate_builder_extension.rb b/lib/active_record/filter/predicate_builder_extension.rb index 183ebc2..2b01ceb 100644 --- a/lib/active_record/filter/predicate_builder_extension.rb +++ b/lib/active_record/filter/predicate_builder_extension.rb @@ -166,7 +166,7 @@ def expand_filter_for_column(key, column, value, relation_trail) expand_filter_for_arel_attribute(column, attribute, subkey, subvalue) end nodes.inject { |c, n| c.nil? ? n : c.and(n) } - elsif value == nil + elsif value == nil || value == 'nil' attribute.eq(nil) elsif value == true || value == 'true' column.type == :boolean ? attribute.eq(true) : attribute.not_eq(nil) diff --git a/test/filter_column_test/string_test.rb b/test/filter_column_test/string_test.rb index cb8a903..aeb0062 100644 --- a/test/filter_column_test/string_test.rb +++ b/test/filter_column_test/string_test.rb @@ -26,6 +26,13 @@ class Property < ActiveRecord::Base FROM properties WHERE properties.name IS NULL SQL + + query = Property.filter(name: 'nil') + assert_equal(<<-SQL.strip.gsub(/\s+/, ' '), query.to_sql.strip.gsub('"', '')) + SELECT properties.* + FROM properties + WHERE properties.name IS NULL + SQL end test "::filter :string_column => boolean" do