将ActiveRecord映射为Rails上的动态键值对

时间:2017-10-19 15:14:31

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

我想将ActiveRecord查询映射为键值对

我希望以

的形式获得json_result
{ "16": "2017-10-16T17:04:51.000Z" }

但是下面的代码以

的形式提取结果
{ "id": 16, "date": "2017-10-16T17:04:51.000Z" }

r.id: r.started_at不起作用。

 @results = Visit.all

 json_results = {
    data: @results.map do |r| {
      id:   r.id,
      date: r.started_at

    } end
  }

如何在Rails中实现这一点,因为我在这方面遇到了一些麻烦。

2 个答案:

答案 0 :(得分:3)

另一种方法是将pluckto_h

一起使用
json_results = Visit.pluck(:id, :started_at).to_h

答案 1 :(得分:0)

试试这个:

 json_results = {
   data: @results.map do |r|
           { r.id => r.started_at }
         end
 }

示例:

puts ({4 => "foo"}.to_json)
# {"4":"foo"}