更新哈希数组中的值并更快地返回json

时间:2017-09-04 18:46:35

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

我目前正在开发一个数据库API,它返回一个ActiveRecord :: Base类调用的结果。现在,当我需要PostGres数据库中的数据时,我使用以下命令:

 ApiResponse.select([:id, :ts, :response])
          .where(userid: 'toto')
          .limit(limit).to_a

这段代码正在查找,我得到一个哈希数组:

[
    [ 0] #<ApiResponse:0x007fb27e5d0c40> {
              :id => "7cbf6ce2-ec5e-41e0-8185-030f0a70b247",
              :ts => 2017-08-28 20:21:09 UTC,
              :response => {}}, ...
   ...

]

ApiResponse只是一个使用ActiveRecord访问数据库的类,定义为:

class ApiResponse < ActiveRecord::Base

现在,基于结果我必须运行以下代码才能使其成为JSON并修改ts字段

 new_list = list.map do | e |
        {
            id: e['id'],
            ts: e['ts'].strftime("%F %T.%6N%z"),
            response: e['response']
        }
      end

这个解决方案不是我认为最好的,因为我正在运行地图(列表是select命令的结果)来修改一个字段[ts]以匹配日期/时间格式,其次,我正在做< / p>

return new_list.to_json

需要修改日期/时间是因为PostGres DB使用PostGres日期/时间格式但ActiveRecord使用ISO8601。

我有2个问题:

  • 是否有更快的方法来解析所有数组以在每个ts字段上应用'strftime'?除了使用地图

  • 有没有办法避免使用'to_json'to_json非常慢。为了保护隐私,响应为空,但在我的代码中,它包含大量数据会降低系统速度。

谢谢

0 个答案:

没有答案