首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML序列化不包括Rails模型的datetime字段中的毫秒。

XML序列化不包括Rails模型的datetime字段中的毫秒。
EN

Stack Overflow用户
提问于 2010-03-08 18:44:20
回答 2查看 975关注 0票数 1

默认情况下,数据库中的datetime字段正在转换并去掉毫秒:

some_datetime => "2009-11-11T02:19:36Z“

attribute_before_type_cast('some_datetime') => "2009-11-11 02:19:36.145“

如果我试图重写该属性的访问器,如下所示;

代码语言:javascript
复制
def some_datetime
  attribute_before_type_cast('some_datetime')
end

当我尝试该模型的"to_xml“时,我会得到以下错误:

NoMethodError (用于"2009-11-11 02:19:36.145“的未定义方法‘`xmlschema’):String:

我试图将字符串解析为Time对象,但无法获得包含毫秒的字符串;

代码语言:javascript
复制
  def some_datetime
    Time.parse(attribute_before_type_cast('some_datetime').sub(/\s/,"T").sub(/$/,"Z"))
  end

有人能帮助获得to_xml呈现的毫秒的日期时间吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-08 19:17:42

事实证明,我可以排除原始的datetime字段,并添加一个自定义方法,然后将datetime作为字符串呈现给to_xml。这感觉很烦人,但很管用.在原始的datetime字段中是否有另一种直接获取毫秒的方法?

在每个模型中,我排除了“除了”字段名,这些字段名的日期时间是我想要更改的,我还包括了“方法”,它的名称相同,在输入属性之前返回该属性。

代码语言:javascript
复制
  def to_xml(options = {})
    options[:methods] = [:some_datetime]
    options[:except] = [:some_datetime]
    super
  end

  def some_datetime
    attribute_before_type_cast('some_datetime')
  end

渲染to_xml的效果很好,包括模型和我传入的任何其他选项。

票数 0
EN

Stack Overflow用户

发布于 2010-05-31 16:45:08

我已经开始学习Ruby,并且对Mats“最不惊讶的原则”印象深刻。

但是Ruby (和Rails )中的日期和时间实现充满了惊喜:

从一个普通的irb开始:

需要‘时间’

=>真

dt = Time.now

=> 2010-05-31 17:18:39 +0100

Time.parse(dt.to_s) == dt

=>假的!?

dt.to_s(:db)

ArgumentError:错误的参数数(1对0)

(Irb):5:在to_s'

from (irb):5

from C:/Ruby19/bin/irb:12:in

好吧,让我们走几条铁轨:

sqlserver_test/development?:dt2 = Time.zone.now

=> Mon,2010年5月31日17:24:54 CEST +02:00

sqlserver_test/开发: dt2.class

=> ActiveSupport::TimeWithZone

sqlserver_test/开发: Time.zone.parse(dt2.to_s) == dt2

=>假

sqlserver_test/开发: dt2.to_s(:db)

=> "2010-05-31 15:24:54“

sqlserver_test/开发:dt2.to_s(:test 8601)

=> "2010-05-31 17:24:54 +0200“

sqlserver_test/开发:dt2.to_s(:test 8601) == dt2.iso8601

=>假

(全部运行在Ruby1.9.1上,Rails 2.3.5在Windows上运行)

目前,我只发现几个关于DateTime字段和数据库的“黑客”,但没有干净的解决方案,没有惊喜.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2403794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档