Sha256: 77148c0d760bf13333c1d72c7f3c921f371f6e1dd3bf974c30009bf371ac6449

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

module Puffer
  module Controller
    module Mutate
      extend ActiveSupport::Concern

      included do
        helper 'puffer/helpers/puffer'

        delegate :model, :model_name, :to => 'self.class'
        helper_method :puffer_filters, :puffer_namespace, :resource, :record, :records
      end

      def process_action method_name, *args
        params[:puffer] = Rails.application.routes.resources_tree[params[:puffer]] if params[:puffer]
        super
      end

      def puffer_filters
        @puffer_filters ||= begin
          filters = params[Puffer::Filters.model_name.param_key] || {}
          filters.reverse_merge! :puffer_order => configuration.order if configuration.order.present?
          filters.reverse_merge! :puffer_per_page => configuration.per_page if configuration.per_page.present?
          Puffer::Filters.new filter_fields, filters
        end
      end

      def puffer_namespace
        request.path_info.split('/').delete_if(&:blank?).first.to_sym
      end

      def resource
        @resource ||= Puffer::Resource.new params, self
      end

      def record
        @record || instance_variable_get("@#{resource.model_name}")
      end

      def records
        @records || instance_variable_get("@#{resource.model_name.pluralize}")
      end

      module ClassMethods

        def puffer?
          true
        end

        def model_name
          @model_name ||= (configuration.model_name || controller_name.singularize).to_s
        end

        def model
          @model ||= model_name.camelize.constantize rescue nil
        end

      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
puffer-0.1.1 lib/puffer/controller/mutate.rb