Sha256: d2ffd94a3b8be7ec4049256d844a3704cd4b3c491ab539f0a7d6eca4bdc3f126
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
# frozen_string_literal: true module TenaDcms module Common extend ActiveSupport::Concern included do before_action :set_clazz before_action :set_object, only: %i[show update destroy] end def index data = if block_given? yield else @clazz.all end render json: { success: true, data: serialize(data) } end def show render json: { success: true, data: serialize(@obj) } end def create obj = if block_given? yield else @clazz.new(model_params) end if obj.save render json: { success: true, data: serialize(obj) }, status: :created else render json: { success: false, error: obj.errors.full_messages[0] }, status: :unprocessable_entity end rescue StandardError => e render json: { success: false, error: e.message } end def update if block_given? yield else obj = @obj end if obj.update(model_params) render json: { success: true, data: serialize(obj) }, status: :ok else render json: { error: obj.errors, success: false }, status: :unprocessable_entity end rescue StandardError => e render json: { success: false, error: e.message } end def destroy @obj.destroy end private def serialize(data) ActiveModelSerializers::SerializableResource.new(data) end def set_clazz @clazz = controller_name.classify.constantize end def set_object @obj = @clazz.find(params[:id]) end # override by the child controllers def model_params end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tena_dcms-0.1.0 | app/controllers/concerns/tena_dcms/common.rb |