class Wallaby::ModelServicer
This is the base servicer class to provider data source related operations for given/associated model. In general, it works together with {#authorizer} to ensure that all operations are legitmate.
For best practice, please create an application servicer class (see example) to better control the functions shared between different model servicers. @example Create an application class for Admin Interface usage
class Admin::ApplicationServicer < Wallaby::ModelServicer base_class! end
Attributes
@!attribute [r] model_class
@return [Class]
@!attribute [r] model_decorator
@return [Wallaby::ModelDecorator] @since wallaby-5.2.0
@!attribute [r] provider @return [Wallaby::ModelServiceProvider] the instance that does the job @since wallaby-5.2.0
Public Class Methods
@param model_class
[Class] @param authorizer [Wallaby::ModelAuthorizer] @param model_decorator
[Wallaby::ModelDecorator] @raise [ArgumentError] if model_class
is blank
# File lib/servicers/wallaby/model_servicer.rb, line 46 def initialize(model_class, authorizer, model_decorator = nil) @model_class = model_class || self.class.model_class raise ArgumentError, 'Please provide a `model_class`.' unless @model_class @model_decorator = model_decorator || Map.model_decorator_map(model_class) @authorizer = authorizer @provider = Map.service_provider_map(@model_class).new(@model_class, @model_decorator) end
Public Instance Methods
@note This is a template method that can be overridden by subclasses. Return a collection by querying the datasource (e.g. database, REST API). @param params [ActionController::Parameters, Hash] @return [Enumerable] list of resources
# File lib/servicers/wallaby/model_servicer.rb, line 68 def collection(params) provider.collection params, authorizer end
@note This is a template method that can be overridden by subclasses. To create a resource. @param resource [Object] @param params [ActionController::Parameters] @return [Object] created resource
# File lib/servicers/wallaby/model_servicer.rb, line 102 def create(resource, params) provider.create resource, params, authorizer end
@note This is a template method that can be overridden by subclasses. To delete a resource. @param resource [Object] @param params [ActionController::Parameters] @return [Object] resource
# File lib/servicers/wallaby/model_servicer.rb, line 120 def destroy(resource, params) provider.destroy resource, params, authorizer end
@note This is a template method that can be overridden by subclasses. To find a resource. @param id [Object] @param params [ActionController::Parameters] @return [Object] found resource
# File lib/servicers/wallaby/model_servicer.rb, line 93 def find(id, params) provider.find id, params, authorizer end
@note This is a template method that can be overridden by subclasses. Initialize an instance of the model class. @param params [ActionController::Parameters] @return [Object] initialized resource
# File lib/servicers/wallaby/model_servicer.rb, line 84 def new(params) provider.new params, authorizer end
@note This is a template method that can be overridden by subclasses. Whitelist parameters for mass assignment. @param params [ActionController::Parameters, Hash] @param action [String, Symbol, nil] @return [ActionController::Parameters] permitted params
# File lib/servicers/wallaby/model_servicer.rb, line 60 def permit(params, action = nil) provider.permit params, action, authorizer end
@note This is a template method that can be overridden by subclasses. To update a resource. @param resource [Object] @param params [ActionController::Parameters] @return [Object] resource
# File lib/servicers/wallaby/model_servicer.rb, line 111 def update(resource, params) provider.update resource, params, authorizer end