zdennis/ar-extensions

sanitize_sql_from_hash doesn't append nil to values array

bvandenbos opened this issue · 0 comments

The following call to sanitize_sql_from_hash yields invalid conditions:

sanitize_sql_from_hash({'state_id' => 3, 'county_id' => nil})

And ends up throwing:

wrong number of bind variables (1 for 2)

There seems to be a specific check to make sure nil is not appended to the values array, which doesn't seem right, but I don't pretend to fully understand this method so it's likely I'm missing something. Seems like the following diff would take care of it:

diff --git a/ar-extensions/lib/ar-extensions/finders.rb b/ar-extensions/lib/ar-extensions/finders.rb
index 874ba3c..374ac2a 100644
--- a/ar-extensions/lib/ar-extensions/finders.rb
+++ b/ar-extensions/lib/ar-extensions/finders.rb
@@ -63,7 +63,7 @@ class ActiveRecord::Base
           result = ActiveRecord::Extensions.process( key, val, self )
           if result
             conditions << result.sql
-            values.push( result.value ) unless result.value.nil?
+            values.push( result.value )
           else
             # Extract table name from qualified attribute names.
             attr = key.to_s
@@ -91,4 +91,4 @@ class ActiveRecord::Base
   end
   
 end
-end
\ No newline at end of file
+end