Не могу включить отношения с данными ActiveRecord при отправке json_response - PullRequest
0 голосов
/ 25 января 2020

Мне нужно получить ответ в следующем виде:

{ 
  unit_id: 5, 
  notifications: [
    {
      id: 123, 
      unit_id: 5, 
      created_at: 2020-01-24T16:42:20.000Z,
      grow_notification_id: 59: 
      grow_notification: {
        id: 59, 
        title: "Update 6.0.0",
        full_content: "Introducing fresh push notifications! We...",
        ...
      },
     ...
    ]
  }
}

Я знаю, что могу что-то сделать @unit.notifications.include(:grow_notifications), но это не дает мне желаемый формат.

Единственное, что несколько сработало, было, когда я это сделал:

@notifications = @unit.notifications
render json: @notifications.includes(:grow_notification), include: ['grow_notification']

Но, если я попытаюсь сделать что-то вроде:

render json: {
  unit_id: @unit.id,
  notifications: @notifications.includes(:grow_notification), include: ['grow_notification']
}

или

render json: {
  unit_id: @unit.id,
  active_unit_plant: @unit.active_unit_plant,
  notifications: @notifications.includes(:grow_notification), include: ['grow_notification']
}

Я не получаю объект .grow_notification в JSON.

1 Ответ

1 голос
/ 25 января 2020

В качестве справочного значения render здесь :

render(options = nil, extra_options = {}, &block)

Код ниже не работает, потому что вы вводите include: ['grow_notification'] в первый аргумент options, когда это должно быть второй extra_options

render json: {
  unit_id: @unit.id,
  notifications: @notifications.includes(:grow_notification), include: ['grow_notification']
}

Правильное использование:

render json: {
  unit_id: @unit.id,
  notifications: @notifications
}, include: ['grow_notification']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...