代码之家  ›  专栏  ›  技术社区  ›  Kilmer Luiz Aleluia

如何向Rails JSON对象添加信息?

  •  0
  • Kilmer Luiz Aleluia  · 技术社区  · 6 年前

    我有一个对象聊天消息,我需要一个JSON及其用户。我正在使用:

    chat_message.as_json(include: { author: { only: [:id, :phone_number, 
    :country_alpha_2]})
    

    比如说,我想给作者添加数据 hello: "world" . 我该怎么做?

    我试过这样的方法:

    .as_json(include: { author: { only: [:id, :phone_number, 
    :country_alpha_2], hello: 'world'}})
    

    .as_json(include: { author: { only: [:id, :phone_number, 
    :country_alpha_2]}.merge(hello: 'world') })
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Sebastián Palma    6 年前

    你可以一直使用 Object#tap :

    .as_json(include: { author: { only: [:id, :phone_number, :country_alpha_2] } })
    .tap { |json| json['author']['hello'] = 'world' }
    
        2
  •  0
  •   Marcin Kołodziej    6 年前

    除非你想自己修补最后的杂凑,也就是说。

    json = chat_message.as_json(include: { author: { only: [:id, :phone_number, :country_alpha_2] }})
    json["author"].merge!(hello: "world")
    

    您可以向 User 模型与应用 :methods 如上所述 as_json 文档:

    class User
      def hello
        "world"
      end
    end
    
    chat_message.as_json(include: {
      author: { only: [:id, :phone_number, :country_alpha_2], methods: :hello }
    })