aboutsummaryrefslogtreecommitdiffstats
path: root/test/support
diff options
context:
space:
mode:
authorDylan Smith <Dylan.Smith@shopify.com>2013-02-13 14:37:51 -0500
committerDylan Thacker-Smith <Dylan.Smith@shopify.com>2014-04-28 03:10:47 -0400
commit1a2bf3df0e3350142d36a51d351ed38523b9f63c (patch)
tree435f45b71a5f9ca16710e8efae924ff164b363f8 /test/support
parentde916331c3536db839f844034176bf321d94efa7 (diff)
downloadrails-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')
-rw-r--r--test/support/fake_record.rb14
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