Sha256: 22ef6c18797616e66d053757e558a0b154ad018dc1dd7f428436ff54fe44f8d2

Contents?: true

Size: 1.49 KB

Versions: 17

Compression:

Stored size: 1.49 KB

Contents

# frozen_string_literal: true

module EIVO
  module Concerns
    module Resource
      extend ::ActiveSupport::Concern

      included do
        before_action :set_default_serializer_options
      end

      def show
        @object ||= collection
        render_success serializer.new(@object, @serializer_options)
      end

      def create
        @object ||= collection.new
        @object.assign_attributes(object_params_create)

        if @object.save
          render_success serializer.new(@object, @serializer_options)
        else
          render_model_errors @object.errors
        end
      end

      def update
        @object ||= collection
        @object.assign_attributes(object_params_update)

        if @object.save
          render_success serializer.new(@object, @serializer_options)
        else
          render_model_errors @object.errors
        end
      end

      def destroy
        @object ||= collection

        if @object.destroy
          render_success
        else
          render_model_errors @object.errors
        end
      end

      protected

      def collection
        raise NotImplementedError
      end

      def serializer
        raise NotImplementedError
      end

      def object_params
        raise NotImplementedError
      end

      def object_params_create
        object_params
      end

      def object_params_update
        object_params
      end

      def set_default_serializer_options
        @serializer_options ||= {}
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
eivo-rails-api-0.1.14 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.13 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.12 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.11 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.10 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.9 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.8 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.7 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.6 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.5 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.4 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.3 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.2 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.1 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.1.0 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.0.9 app/controllers/eivo/concerns/resource.rb
eivo-rails-api-0.0.8 app/controllers/eivo/concerns/resource.rb