I literally always have to look up the meaning of :limit in migrations when it comes to integer values. Here’s an overview. Now let’s memorise it (oh, this works for MySQL, other databases may work differently):
| :limit | Numeric Type | Column Size | Max value |
|---|---|---|---|
| 1 | tinyint | 1 byte | 127 |
| 2 | smallint | 2 bytes | 32767 |
| 3 | mediumint | 3 byte | 8388607 |
| nil, 4, 11 | int(11) | 4 byte | 2147483647 |
| 5..8 | bitint | 8 byte | 9223372036854775807 |
Note: by default MySQL uses signed integers and Rails has no way (that I know of) to change this behaviour. Subsequently, the max. values noted are for signed integers.

FYI: Choosing your column sizes correctly can improve MySQL performance dramatically.
Oh cool, this really helped me – thanks!
THANKS! This is really useful – where can I find this in the Rails API docs?