class Cuprum::Rails::Actions::ResourceAction

Abstract base class for resourceful actions.

Public Class Methods

new(resource:) click to toggle source

@param resource [Cuprum::Rails::Resource] The controller resource.

Calls superclass method Cuprum::Rails::Action::new
# File lib/cuprum/rails/actions/resource_action.rb, line 16
def initialize(resource:)
  if resource.collection.nil?
    raise ArgumentError, 'resource must have a collection'
  end

  super
end

Public Instance Methods

resource_id() click to toggle source

@return [Object] the primary key for the resource.

# File lib/cuprum/rails/actions/resource_action.rb, line 30
def resource_id
  return success(params[:id]) if params[:id].present?

  failure(missing_primary_key_error)
end
resource_params() click to toggle source

@return [Hash] the permitted params for the resource.

# File lib/cuprum/rails/actions/resource_action.rb, line 37
def resource_params
  return failure(permitted_attributes_error) unless permitted_attributes?

  success(raw_resource_params)
rescue ActionController::ParameterMissing
  failure(missing_parameters_error)
end

Private Instance Methods

missing_parameters_error() click to toggle source
# File lib/cuprum/rails/actions/resource_action.rb, line 47
def missing_parameters_error
  Cuprum::Rails::Errors::MissingParameters
    .new(resource_name: singular_resource_name)
end
missing_primary_key_error() click to toggle source
# File lib/cuprum/rails/actions/resource_action.rb, line 52
def missing_primary_key_error
  Cuprum::Rails::Errors::MissingPrimaryKey.new(
    primary_key:   resource.primary_key,
    resource_name: singular_resource_name
  )
end
permitted_attributes?() click to toggle source
# File lib/cuprum/rails/actions/resource_action.rb, line 59
def permitted_attributes?
  !resource.permitted_attributes.nil?
end
permitted_attributes_error() click to toggle source
# File lib/cuprum/rails/actions/resource_action.rb, line 63
def permitted_attributes_error
  Cuprum::Rails::Errors::UndefinedPermittedAttributes
    .new(resource_name: singular_resource_name)
end
raw_resource_params() click to toggle source
# File lib/cuprum/rails/actions/resource_action.rb, line 68
def raw_resource_params
  params
    .require(singular_resource_name)
    .permit(*resource.permitted_attributes)
    .to_hash
end