如何向返回的 ActiveRecord 查询记录添加数据

How to add data to returned ActiveRecord query records

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

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"}]

如何在发送之前迭代返回的结果?

试试这个。 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