[tweetmeme]
Here’s a little gotcha for you which caught me out by surprise, obvious when you think about it, but irritating if you miss it: the ruby String comparison operator does case-sensitive comparisons.
# Good: ['C', 'b', 'A', 'D'].sort #=> ['A', 'b', 'C', 'D'] # Bad (what <=> gives you out the box): ['C', 'b', 'A', 'D'].sort #=> ['A', 'C', 'D', 'b']
For a nice efficient implementation of a AR model comparitor use the String#casecmp method for a case-insensitive comparison:
class MyObject def <=>(other) self.my_attribute.casecmp(other.my_attribute) end end