class Resources::Manager

Public Class Methods

new(controller, request, *args) click to toggle source
# File lib/resources/manager.rb, line 5
def initialize controller, request, *args
  @controller = controller
  @request = request
  @settings = grape? ? @controller.resource_configuration : @controller.class.resource_configuration
end

Public Instance Methods

build_resource() click to toggle source
# File lib/resources/manager.rb, line 83
def build_resource
  resource_class.new()
end
grape?() click to toggle source
# File lib/resources/manager.rb, line 28
def grape?
  defined?(Grape) && !(controller.class < ActionController::Base)
end
pagination?() click to toggle source
# File lib/resources/manager.rb, line 32
def pagination?
  settings.pagination.respond_to?(:call) ? settings.pagination.call(params, controller) : settings.pagination
end
params() click to toggle source
# File lib/resources/manager.rb, line 67
def params
  grape? ? request.params : controller.params
end
params_page() click to toggle source
# File lib/resources/manager.rb, line 75
def params_page
  @params_page ||= option_with_params(:params_page)
end
params_resource() click to toggle source
# File lib/resources/manager.rb, line 79
def params_resource
  @params_resource ||= option_with_params(:params_resource)
end
resource() click to toggle source
# File lib/resources/manager.rb, line 49
def resource
  if grape?
    @resource ||= params[:id].blank? ? build_resource : (resource_scope.find(params[:id]) rescue nil )
  else
    @resource ||=
      case controller.action_name
      when "new", "create"
        build_resource
      else
        resource_scope.find(params[:id]) rescue nil
      end
  end
end
resource_class() click to toggle source
# File lib/resources/manager.rb, line 11
def resource_class
  @resource_class_name ||= settings.resource_class_name.to_s.safe_constantize
end
resource_scope() click to toggle source
# File lib/resources/manager.rb, line 36
def resource_scope
  @resource_scope = option_with_scope(:resource_scope)
end
resources() click to toggle source
# File lib/resources/manager.rb, line 45
def resources
  @resources ||= settings.search ? resources_search.result(settings.search_options) : resources_scope
end
resources_scope() click to toggle source
# File lib/resources/manager.rb, line 15
def resources_scope
  scope = option_with_scope(:resources_scope)
  @resources_scope =
    case
    when pagination?
      scope = scope.page(params_page) if scope.respond_to?(:page)
      scope = scope.paginate(page: params_page) if scope.respond_to?(:paginate)
      scope
    else
      scope
    end
end
settings() click to toggle source
# File lib/resources/manager.rb, line 63
def settings
  @settings
end

Private Instance Methods

controller() click to toggle source
# File lib/resources/manager.rb, line 134
def controller
  @controller
end
forbidden_params_names() click to toggle source
# File lib/resources/manager.rb, line 102
def forbidden_params_names
  [settings.resource_method_name, settings.resources_method_name, :resource, :resources]
end
forbidden_params_names?(name) click to toggle source
# File lib/resources/manager.rb, line 106
def forbidden_params_names? name
  forbidden_params_names.map(&:to_s).include?(settings.send(name).to_s)
end
option_with_params(name) click to toggle source
# File lib/resources/manager.rb, line 114
def option_with_params name
  result = {}
  if settings.send(name).respond_to?(:call)
    result = settings.send(name).call(params)
  else
    if Rails::VERSION::MAJOR >= 4
      value = params[settings.send(name)]
      if name.to_s == "params_resource"
        result = value.respond_to?(:permit) && resource_allow_permit? ? value.permit(*resource.permited_attributes) : value
      else
        result = value
      end
    else
      result = params[settings.send(name)]
    end
  end
  result = result && result.is_a?(Hash) || name.to_s == "params_page" ? result :  {}
  result
end
option_with_scope(name) click to toggle source
# File lib/resources/manager.rb, line 92
def option_with_scope name
  raise ArgumentError.new("The class '#{settings.resource_class_name}' does not exists. Please specify a valid model") if resource_class.nil?
  scope = Rails::VERSION::MAJOR >= 4 ? resource_class.all : resource_class.scoped
  if settings.send(name)
    settings.send(name).respond_to?(:call) ? settings.send(name).call(scope,params,controller) : scope.send(settings.send(name))
  else
    scope
  end
end
request() click to toggle source
# File lib/resources/manager.rb, line 138
def request
  @request
end
resource_allow_permit?() click to toggle source
# File lib/resources/manager.rb, line 110
def resource_allow_permit?
  resource.respond_to?(:permited_attributes) && resource.permited_attributes.is_a?(Array)
end