metamaps--metamaps/app/controllers/mappings_controller.rb
Connor Turland fb12c7e202 Track everything we need to reconstruct maps (#984)
* feature/more.events

* keep mapping.user as the creator

* cleanup cruft and include slack notifs

* capture topic and synapse updates, store the old values

* avoid the mapping gets deleted problem

* include an indicator of which values changed

* style cleanup

* remove the hack in favor of a legit way

* updated schema file
2016-12-16 16:51:52 -05:00

62 lines
1.4 KiB
Ruby

# frozen_string_literal: true
class MappingsController < ApplicationController
before_action :require_user, only: [:create, :update, :destroy]
after_action :verify_authorized, except: :index
after_action :verify_policy_scoped, only: :index
respond_to :json
# GET /mappings/1.json
def show
@mapping = Mapping.find(params[:id])
authorize @mapping
render json: @mapping
end
# POST /mappings.json
def create
@mapping = Mapping.new(mapping_params)
authorize @mapping
@mapping.user = current_user
@mapping.updated_by = current_user
if @mapping.save
render json: @mapping, status: :created
else
render json: @mapping.errors, status: :unprocessable_entity
end
end
# PUT /mappings/1.json
def update
@mapping = Mapping.find(params[:id])
authorize @mapping
@mapping.updated_by = current_user
@mapping.assign_attributes(mapping_params)
if @mapping.save
head :no_content
else
render json: @mapping.errors, status: :unprocessable_entity
end
end
# DELETE /mappings/1.json
def destroy
@mapping = Mapping.find(params[:id])
authorize @mapping
@mapping.updated_by = current_user
@mapping.destroy
head :no_content
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def mapping_params
params.require(:mapping).permit(:id, :xloc, :yloc, :mappable_id, :mappable_type, :map_id)
end
end