【问题标题】:Rails way to return create has many association on controllerRails 返回创建的方式在控制器上有很多关联
【发布时间】:2020-01-27 19:46:16
【问题描述】:

我有以下控制器:

# 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 约定的情况下做到这一点。

【问题讨论】:

  • 您到底希望得到什么响应? “在响应中返回 session_id”非常模糊。请提供所需输出的示例。

标签: ruby-on-rails model-view-controller


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多