开发者

DataMapper 'datetime' field format

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

I am getting result:

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

But 'registered_at' value is not I've expected, what's the reason of this behavior?


Datamapper handles probably re-parses the date into a proper Ruby object so you can use and manipulate it. You don't have to take care of the right date/time format for the DB, Datamapper will handle it for you.

You can also leave the .to_s(:db) out, as Datamapper will know what to do with it.

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


You declared :registered_at property to be a DateTime hence DataMapper will always convert every non-DateTime value into a DateTime object. Why do you pass a string as a value?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜