use a transaction to handle authorization vs invalid record in synapse controller

This commit is contained in:
Devin Howard 2016-10-25 11:39:34 +08:00
parent 496a15a836
commit 070bb0c368

View file

@ -22,10 +22,15 @@ class SynapsesController < ApplicationController
@synapse = Synapse.new(synapse_params) @synapse = Synapse.new(synapse_params)
@synapse.desc = '' if @synapse.desc.nil? @synapse.desc = '' if @synapse.desc.nil?
@synapse.desc.strip! # no trailing/leading whitespace @synapse.desc.strip! # no trailing/leading whitespace
authorize @synapse
success = nil
ActiveRecord::Base.transaction do
success = @synapse.save
success ? authorize(@synapse) : skip_authorization
end
respond_to do |format| respond_to do |format|
if @synapse.save if success
format.json { render json: @synapse, status: :created } format.json { render json: @synapse, status: :created }
else else
format.json { render json: @synapse.errors, status: :unprocessable_entity } format.json { render json: @synapse.errors, status: :unprocessable_entity }