Формат поля DataMapper 'datetime' - PullRequest
0 голосов
/ 10 марта 2011
require 'active_support' # for Time.now.to_s(:db)
require 'user' # user.rb has DataMapper 'property :registered_at, DateTime'

p Time.now.to_s(:db)

ob = User.create(
    :id => 1, 
    :login => 'login',
    :registered_at => Time.now.to_s(:db)
)

p ob

Я получаю результат:

"2011-03-10 16:21:41"
#<User @id=1 @login="login" @registered_at=Thu, 10 Mar 2011 16:21:41 +0000>

Но значение «зарегистрированный_кат» - это не то, чего я ожидал, в чем причина такого поведения?

Ответы [ 2 ]

0 голосов
/ 10 марта 2011

Вы объявили: свойство selected_at должно быть DateTime, поэтому DataMapper всегда будет преобразовывать каждое значение, отличное от DateTime, в объект DateTime. Почему вы передаете строку в качестве значения?

0 голосов
/ 10 марта 2011

Ручки Datamapper, вероятно, повторно анализируют дату в правильный объект Ruby, чтобы вы могли использовать и манипулировать им.Вам не нужно заботиться о правильном формате даты / времени для БД, Datamapper позаботится об этом за вас.

Вы также можете опустить .to_s(:db), поскольку Datamapper будет знать, что делать сит.

ob = User.create(
    :id => 1, 
    :login => 'login',
    :registered_at => Time.now
)
...