sanitize_sql_from_hash doesn't append nil to values array
bvandenbos opened this issue · 0 comments
bvandenbos commented
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