Ниже предполагается, что Rails 3.x.
Помните, что
>> SomeModel.first
=> #<SomeModel datetime: "2010-01-20 12:00:00"> #shouldn't it be "2010-01-20 12:00:00.123"?
и
>> SomeModel.first.datetime
=> "2010-01-20 12:00:00.123"
будут показывать различный вывод в консоли Rails, потому что консоль вызовет #inspect в результате выполнения оператора.
>> SomeModel.first
фактически отобразит
>> SomeModel.first.inspect
, который внутренне вызывает #attribute_for_inspect (name) (в отличие от вызова переопределенного метода #datetime), тогда как
>> SomeModel.first.datetime
вызовет переопределенный метод #datetime, в результате чего для него будет вызван #inspect.
Также убедитесь, что вы работаете с Ruby DateTime, а не с Time, Date или другой датой./ time class, если вы хотите переопределить методы #inspect или #to_s для изменения текстового формата вашего поля 'datetime'.