Created
October 17, 2011 15:07
-
-
Save riethmayer/1292816 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ruby-1.9.2-p290 :043 > SecureRandom.hex(8) | |
=> "4935b273ef3ff39b" | |
ruby-1.9.2-p290 :044 > token = _ | |
=> "4935b273ef3ff39b" | |
ruby-1.9.2-p290 :045 > Cart.create(:token => token) | |
SQL (0.7ms) INSERT INTO "carts" ("created_at", "token", "updated_at") VALUES (?, ?, ?) [["created_at", Mon, 17 Oct 2011 15:06:10 UTC +00:00], ["token", "4935b273ef3ff39b"], ["updated_at", Mon, 17 Oct 2011 15:06:10 UTC +00:00]] | |
=> #<Cart id: 4, token: "4935b273ef3ff39b", created_at: "2011-10-17 15:06:10", updated_at: "2011-10-17 15:06:10"> | |
ruby-1.9.2-p290 :046 > Cart.where(:token => token) | |
Cart Load (0.3ms) SELECT "carts".* FROM "carts" WHERE "carts"."token" = '4935b273ef3ff39b' | |
=> [] | |
this works: | |
ruby-1.9.2-p290 :058 > token = "another simple string" | |
=> "another simple string" | |
ruby-1.9.2-p290 :059 > Cart.create(:token => token) | |
SQL (1.1ms) INSERT INTO "carts" ("created_at", "token", "updated_at") VALUES (?, ?, ?) [["created_at", Mon, 17 Oct 2011 15:14:57 UTC +00:00], ["token", "another simple string"], ["updated_at", Mon, 17 Oct 2011 15:14:57 UTC +00:00]] | |
=> #<Cart id: 7, token: "another simple string", created_at: "2011-10-17 15:14:57", updated_at: "2011-10-17 15:14:57"> | |
ruby-1.9.2-p290 :060 > Cart.where(:token => token) | |
Cart Load (0.3ms) SELECT "carts".* FROM "carts" WHERE "carts"."token" = 'another simple string' | |
=> [#<Cart id: 7, token: "another simple string", created_at: "2011-10-17 15:14:57", updated_at: "2011-10-17 15:14:57">] | |
ruby-1.9.2-p290 :061 > | |
and this works too: | |
ruby-1.9.2-p290 :067 > token = Cart.find(4).token | |
Cart Load (0.3ms) SELECT "carts".* FROM "carts" WHERE "carts"."id" = ? LIMIT 1 [["id", 4]] | |
=> "4935b273ef3ff39b" | |
ruby-1.9.2-p290 :068 > Cart.where("token like ?",token) | |
Cart Load (0.2ms) SELECT "carts".* FROM "carts" WHERE (token like '4935b273ef3ff39b') | |
=> [#<Cart id: 4, token: "4935b273ef3ff39b", created_at: "2011-10-17 15:06:10", updated_at: "2011-10-17 15:06:10">] | |
ruby-1.9.2-p290 :069 > | |
this was the problem: | |
ruby-1.9.2-p290 :069 > token.encoding | |
=> #<Encoding:ASCII-8BIT> | |
ruby-1.9.2-p290 :070 > Cart.last.token.encoding | |
Cart Load (0.2ms) SELECT "carts".* FROM "carts" ORDER BY "carts"."id" DESC LIMIT 1 | |
=> #<Encoding:UTF-8> | |
ruby-1.9.2-p290 :071 > | |
This is the solution: | |
SecureRandom.hex(18).force_encoding(Cart.connection.encoding) | |
This is not required for mysql2, as it forces utf-8 by itself. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment