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?
精彩评论