返回创建的轨道方式在控制器上有许多关联



我有以下控制器:

# 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

访客模型如下所示:

class Visitor < ApplicationRecord
audited
has_many :sessions, dependent: :destroy
end

现在,当创建访问者时,控制器会返回一个对象:

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

作为创建访问者的一部分,我想创建一个会话并在响应中返回session_id。我想知道如何尊重 Rails 约定。

理想情况下,典型的响应如下所示

{
"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

最新更新