diff options
author | Dylan Smith <Dylan.Smith@shopify.com> | 2013-02-13 14:37:51 -0500 |
---|---|---|
committer | Dylan Thacker-Smith <Dylan.Smith@shopify.com> | 2014-04-28 03:10:47 -0400 |
commit | 1a2bf3df0e3350142d36a51d351ed38523b9f63c (patch) | |
tree | 435f45b71a5f9ca16710e8efae924ff164b363f8 /test/support/fake_record.rb | |
parent | de916331c3536db839f844034176bf321d94efa7 (diff) | |
download | rails-1a2bf3df0e3350142d36a51d351ed38523b9f63c.tar.gz rails-1a2bf3df0e3350142d36a51d351ed38523b9f63c.tar.bz2 rails-1a2bf3df0e3350142d36a51d351ed38523b9f63c.zip |
Test quoting integers when comparing a string column with integers.
An equality with a string column and integer like
SELECT * FROM `users` WHERE `login_token` = 0 LIMIT 1;
will match match any string that doesn't start with a digit in certain
databases, like mysql. Make sure we quote the integer to avoid this
problem in a database independant way.
Diffstat (limited to 'test/support/fake_record.rb')
-rw-r--r-- | test/support/fake_record.rb | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/test/support/fake_record.rb b/test/support/fake_record.rb index ed4420a2cd..035a7a46cf 100644 --- a/test/support/fake_record.rb +++ b/test/support/fake_record.rb @@ -60,9 +60,13 @@ module FakeRecord end def quote thing, column = nil - if column && column.type == :integer - return 'NULL' if thing.nil? - return thing.to_i + if column && !thing.nil? + case column.type + when :integer + thing = thing.to_i + when :string + thing = thing.to_s + end end case thing @@ -111,6 +115,10 @@ module FakeRecord def schema_cache connection end + + def quote thing, column = nil + connection.quote thing, column + end end class Base |