【问题标题】:How to add data to returned ActiveRecord query records如何向返回的 ActiveRecord 查询记录添加数据
【发布时间】:2017-09-14 23:24:27
【问题描述】:

我正在对数据库表进行简单查询以发送到外部服务,但在此之前我需要为每个返回的记录添加一个元素。

app.rb

get "/:task/:account_id/contacts" do
  @contacts = Contact.where("Account = ?", params[:account_id])

  @contacts.to_json
end

提供我需要格式化为的数据

[{"Name":"Charlie Spencer","sfid":"a014100000AYi2ZABG","id":29,"Account":"a054100000FsEA8AAN"},{"Name":"Philip Leak","sfid":"a014100000AYi3PCHZ","id":48,"Account":"a054100000FsEA8AAN"}]

但我需要在通过 json 发送之前将路由中提供的任务添加到结果中:

[{"Name":"Charlie Spencer","sfid":"a014100000AYi2ZABG","id":29,"Account":"a054100000FsEA8AAN","Task":"a014100000AYiWMCC1"},{"Name":"Philip Leak","sfid":"a014100000AYi3PCHZ","id":48,"Account":"a054100000FsEA8AAN","Task":"a014100000AYiWMCC1"}]

如何在发送返回结果之前对其进行迭代?

【问题讨论】:

    标签: arrays ruby activerecord sinatra


    【解决方案1】:

    试试这个。 map 方法来转换你的结果,attributes 方法有一个带有字段和值的散列,merge 方法来添加任务。

    get "/:task/:account_id/contacts" do
      @contacts = Contact.where("Account = ?", params[:account_id]).map do |c|
        c.attributes.merge("Task": params[:task])
      end
    
      @contacts.to_json
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      相关资源
      最近更新 更多