module PunditExtra::ResourceAutoload

Public Instance Methods

authorize_resource() click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 54
def authorize_resource
  resource = resource_instance || resource_class
  authorize resource
end
has_permitted_attributes?(resource, action) click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 85
def has_permitted_attributes?(resource, action)
  return true if policy(resource).respond_to? "permitted_attributes_for_#{action}"
  return true if policy(resource).respond_to? :permitted_attributes
  false
end
load_resource() click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 28
def load_resource
  scope = resource_class
  action = params[:action]
  varname = resource_name

  if action == 'index'
    varname = controller_name
    resource = policy_scope resource_class

  elsif action == 'new'
    resource = scope.new

  elsif action == 'create'
    resource = scope.new
    resource.attributes = resource_attributes resource, action

  elsif params[:id]
    resource = scope.find params[:id]

  else
    resource = nil
  end

  instance_variable_set "@#{varname}", resource
end
resource_attributes(resource, action) click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 77
def resource_attributes(resource, action)
  if has_permitted_attributes? resource, action
    permitted_attributes(resource)
  else
    send "#{resource_name}_params"
  end
end
resource_class() click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 69
def resource_class
  resource_name.classify.constantize
end
resource_instance() click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 73
def resource_instance
  instance_variable_get "@#{resource_name}"
end
resource_name() click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 65
def resource_name
  controller_name.singularize
end
skip_authorization_and_scope() click to toggle source
# File lib/pundit_extra/resource_autoload.rb, line 59
def skip_authorization_and_scope
  action = params[:action]
  skip_policy_scope if action == 'index'
  skip_authorization
end