在模型上使用as_json从Rails返回JSON响应中的Date的非标准格式

时间:2013-02-06 21:50:37

标签: ruby-on-rails ruby-on-rails-3 json rails-activerecord

我正在尝试将数据库(日期格式)返回的日期重新格式化为格式化字符串(格式:%m%d%y),以便由单独的客户端应用程序输出。

在客户端进行格式化不是一种选择,因为只有Web应用程序在我们的控制之下。

def as_json(options={})
  super(
    :except => [:id, :created_at, :updated_at],
    :include => {
      :children => {
        :except => [:created_at, :updated_at]
      }
    }
  ).merge(:tasks_total => self.tasks_total)
end

我尝试使用after_initialize回调,但这只会导致将nill值传递给客户端。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:0)

为了解决rails在as_json中对属性强制执行数据类型的问题,我使用了类似的东西,用哈希:

def as_json(options={})
  {
    name: name,
    date_of_birth: self.date_format(date_of_birth),
    more_info: more_info,
    children: children.map(&:as_json)
  }
end

date_format调用是因为此模型实际上有多个日期需要以相同的方式进行格式化。

感谢@rbates的帮助。