Thursday, 28 May 2020
Today on my ruby travels, I realised that
.to_i assumes a little too much:
"3a0a459e-7ca2-4648-ba80-dc6507f7d771".to_i => 3
As you can see,
to_i has made some pretty wild assumptions about what it thinks you wanted, and has selected the first char from the string that is a valid integer.
It is always a good idea to make use of
Integer() if you are uncertain. As you can see, wrapping the UUID in an
Integer() check results in an
ArgumentError being raised:
irb(main):003:0> Integer("3a0a459e-7ca2-4648-ba80-dc6507f7d771") ArgumentError (invalid value for Integer(): "3a0a459e-7ca2-4648-ba80-dc6507f7d771")
Happy coding all!