Sha256: 0b8973cbc1d89f9a1b098a22d9ff8722f9901b7928996cb4aee54f022fcb9ea3

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

module ActiveManageable
  module Methods
    module Index
      extend ActiveSupport::Concern

      included do
        include ActiveManageable::Methods::Auxiliary::Order
        include ActiveManageable::Methods::Auxiliary::Scopes
        include ActiveManageable::Methods::Auxiliary::Includes
        include ActiveManageable::Methods::Auxiliary::Select
        include ActiveManageable::Methods::Auxiliary::UniqueSearch
      end

      def index(options: {})
        initialize_state(options: options)

        @target = authorization_scope
        authorize(record: model_class)
        search(@options[:search])
        order(@options[:order])
        scopes(@options[:scopes])
        page(@options[:page])
        includes(@options[:includes])
        select(@options[:select])
        distinct(unique_search?)

        yield if block_given?

        @target
      end

      private

      def authorization_scope
        action_scope
      end

      def search(opts)
        @target
      end

      def page(opts)
        @target
      end

      def distinct(value)
        @target = target.distinct(value)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_manageable-0.2.0 lib/active_manageable/methods/index.rb