在as_json中更改created_at的日期格式

时间:2018-04-17 06:12:30

标签: ruby-on-rails json

我不太了解红宝石/铁轨。我的应用程序目前正在生成一些消息总线消耗的json:

  message: act.as_json({
    only: [:id, :body, :direction, :kind, :sent, :is_read, :created_at, :call_tag],
    methods: [:delivering?, :attach_list, :voicemail_url, :status, :status_msg]
  })

数据恢复正常,唯一的问题是created_at日期采用了不合适的格式:2018-04-17 01:57:32 UTC。我在iso8601中喜欢它:2018-04-17T01:54:20.026Z。在我的控制器中,正在使用jbuilder并以正确的格式返回json。我对一个解决方案的搜索引导我进入ActiveSupport,尝试以某种方式在message-bus,to_json等发布方法中使用jbuilder。有没有办法将created_at设置为自定义值/格式?如果没有,是否有理由为as_json使用这种其他格式而jbuilder使用iso8601?感谢

1 个答案:

答案 0 :(得分:1)

您可以覆盖相应型号

上的created_at
class Model < ActiveRecord::Base
  def created_at
    attributes['created_at'].strftime("%m/%d/%Y %H:%M")
  end
end

当然,不要忘记根据需要调整格式

然后调用.created_at应该以您指定的格式返回值