Class: Wallaby::ActiveRecord::ModelServiceProvider

Inherits:
ModelServiceProvider show all
Defined in:
lib/adaptors/wallaby/active_record/model_service_provider.rb,
lib/adaptors/wallaby/active_record/model_service_provider/querier.rb,
lib/adaptors/wallaby/active_record/model_service_provider/permitter.rb,
lib/adaptors/wallaby/active_record/model_service_provider/validator.rb,
lib/adaptors/wallaby/active_record/model_service_provider/normalizer.rb,
lib/adaptors/wallaby/active_record/model_service_provider/querier/transformer.rb

Overview

Model service provider

Defined Under Namespace

Classes: Normalizer, Permitter, Querier, Validator

Instance Method Summary collapse

Methods inherited from ModelServiceProvider

#initialize

Constructor Details

This class inherits a constructor from Wallaby::ModelServiceProvider

Instance Method Details

#collection(params, authorizer) ⇒ ActiveRecord::Relation

NOTE: pagination free here. Since somewhere might need the collection without any pagination

Parameters:

  • params (ActionController::Parameters)
  • authorizer (Ability)

    for now

Returns:

  • (ActiveRecord::Relation)

See Also:



19
20
21
22
23
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 19

def collection(params, authorizer)
  query = querier.search params
  query = query.order params[:sort] if params[:sort].present?
  query.accessible_by authorizer
end

#create(resource_with_new_value, params, authorizer) ⇒ Object



56
57
58
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 56

def create(resource_with_new_value, params, authorizer)
  save __callee__, resource_with_new_value, params, authorizer
end

#destroy(resource, _params, _authorizer) ⇒ Object



66
67
68
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 66

def destroy(resource, _params, _authorizer)
  resource.destroy
end

#find(id, permitted_params, _authorizer) ⇒ Object



45
46
47
48
49
50
51
52
53
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 45

def find(id, permitted_params, _authorizer)
  resource = @model_class.find id
  resource.assign_attributes normalize permitted_params
  resource
rescue ::ActiveRecord::RecordNotFound
  raise ResourceNotFound, id
rescue ::ActiveModel::UnknownAttributeError
  resource
end

#new(permitted_params, _authorizer) ⇒ Object



38
39
40
41
42
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 38

def new(permitted_params, _authorizer)
  @model_class.new normalize permitted_params
rescue ::ActiveModel::UnknownAttributeError
  @model_class.new
end

#paginate(query, params) ⇒ Object

Paginate

Parameters:

  • query (ActiveRecord::Relation)
  • params (ActionController::Parameters)
  • paginated (ActiveRecord::Relation)

    query

See Also:



30
31
32
33
34
35
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 30

def paginate(query, params)
  per = params[:per] || Wallaby.configuration.pagination.page_size
  query = query.page params[:page] if query.respond_to? :page
  query = query.per per if query.respond_to? :per
  query
end

#permit(params) ⇒ ActionController::Parameters

Returns whitelisted parameters.

Parameters:

  • params (ActionController::Parameters)

Returns:

  • (ActionController::Parameters)

    whitelisted parameters

See Also:



9
10
11
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 9

def permit(params)
  params.require(param_key).permit permitted_fields
end

#update(resource_with_new_value, params, authorizer) ⇒ Object



61
62
63
# File 'lib/adaptors/wallaby/active_record/model_service_provider.rb', line 61

def update(resource_with_new_value, params, authorizer)
  save __callee__, resource_with_new_value, params, authorizer
end