Как добавить информацию в JSON-объект rails? - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть объект ChatMessage, и мне нужен 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 ]

0 голосов
/ 25 ноября 2018

Вы всегда можете использовать Object # tap :

.as_json(include: { author: { only: [:id, :phone_number, :country_alpha_2] } })
.tap { |json| json['author']['hello'] = 'world' }
0 голосов
/ 25 ноября 2018

Если вы не хотите возиться с окончательным хешем самостоятельно, то есть

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 }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...