# frozen_string_literal: true # API para posiciones # # Las posiciones solo se pueden agregar a su consenso # # @see PiratasController#create class PosicionesController < ApplicationController # Necesitamos autenticarnos before_action :authenticate! before_action :find_barca! # POST /barcas/:barca_id/consensos/:consenso_id/posiciones # # Crea una posiciĆ³n dentro de un consenso # # @param :consenso_id [Integer] El ID del consenso # @param :posicion [Hash] { posicion: { estado: @string, comentario: @string } } # @return [Hash] { id: @int, estado: @string, comentario: @string, # pirata: @pirata } def create @consenso = @barca.consensos.find(params[:consenso_id]) @posicion = @consenso.try(:posiciones).try(:build, posicion_params) @posicion.try(:pirata=, current_pirata) if @posicion.try(:save) render status: :created else render json: @posicion.try(:errors).try(:messages), status: :unprocessable_entity end end private def posicion_params params.require(:posicion).permit(:estado, :comentario) end def find_barca! @barca = Barca.find(params[:barca_id]) end end