It’d be better to store it as an integer and just display it as you described on runtime. Every language has its own way to pad zeros – for Ruby you can use String#rjust. This method pads a string (right-justified) so that it becomes a given length, using a given padding character.
str.rjust(integer, padstr=" ") → new_strIf
integeris greater than the length ofstr, returns a newStringof lengthintegerwithstrright justified and padded withpadstr; otherwise, returnsstr.
some_int = 5
some_int.to_s.rjust(2, '0') # => '05'
some_int.to_s.rjust(5, '0') # => '00005'
another_int = 150
another_int.to_s.rjust(2, '0') # => '150'
another_int.to_s.rjust(3, '0') # => '150'
another_int.to_s.rjust(5, '0') # => '00150'