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