Rails способ вернуть создать имеет много ассоциаций на контроллере - PullRequest
0 голосов
/ 27 января 2020

У меня есть следующий контроллер:

# frozen_string_literal: true

class VisitorsController < ApplicationController
  PERMITED_VISITOR_PARAMS = [
    :ipv4,
  ].freeze

  def create
    @visitor = Visitor.new(visitor_params)

    if @visitor.save
      render json: @visitor, status: :created
    else
      render json: @visitor.errors, status: :unprocessable_entity
    end
  end
end

И модель Visitor выглядит следующим образом:

class Visitor < ApplicationRecord
  audited

  has_many :sessions, dependent: :destroy
end

Прямо сейчас, когда создается посетитель, контроллер возвращает объект:

{
    "id": 980190966,
    "ipv4": "177.45.75.245"
}

И я хотел бы, как часть создания посетителя, создать сеанс и вернуть session_id в ответе. Я хотел бы знать, как сделать это с соблюдением соглашений Rails.

1 Ответ

0 голосов
/ 28 января 2020

Типичный ответ в идеале должен выглядеть следующим образом:

{
    "id": 980190966,
    "ipv4": "177.45.75.245",
    "sessions": [{id: 1, name: "something", ..etc}, {}, ...etc]
}

Чтобы сделать это, используйте код, подобный этому

if @visitor.save
  render json: @visitor, include: [:sessions, :id, :ipv4], status: :created
else
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...