lumi-api/app/controllers/posiciones_controller.rb

44 lines
1.2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2019-04-06 20:41:44 +00:00
# API para posiciones
#
# Las posiciones solo se pueden agregar a su consenso
2019-04-06 20:41:44 +00:00
#
# @see PiratasController#create
class PosicionesController < ApplicationController
2019-04-06 20:41:44 +00:00
# Necesitamos autenticarnos
2019-04-06 19:45:07 +00:00
before_action :authenticate!
2019-08-03 16:23:52 +00:00
before_action :find_barca!
2019-04-06 19:45:07 +00:00
2019-08-03 16:23:52 +00:00
# POST /barcas/:barca_id/consensos/:consenso_id/posiciones
2019-04-06 20:41:44 +00:00
#
# 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
2019-08-03 16:23:52 +00:00
@consenso = @barca.consensos.find(params[:consenso_id])
2019-04-06 19:45:07 +00:00
@posicion = @consenso.try(:posiciones).try(:build, posicion_params)
@posicion.try(:pirata=, current_pirata)
2019-04-06 19:45:07 +00:00
if @posicion.try(:save)
render status: :created
else
2019-04-20 15:49:31 +00:00
render json: @posicion.try(:errors).try(:messages),
2019-04-06 19:45:07 +00:00
status: :unprocessable_entity
end
end
private
def posicion_params
params.require(:posicion).permit(:estado, :comentario)
end
2019-08-03 16:23:52 +00:00
def find_barca!
@barca = Barca.find(params[:barca_id])
end
end