Class: Handlers::Attributes

Inherits:
Base
  • Object
show all
Defined in:
lib/handlers/attributes.rb

Instance Method Summary collapse

Methods inherited from Base

handle, #initialize, #raise_error, #upper

Constructor Details

This class inherits a constructor from Handlers::Base

Instance Method Details

#affect_prepared_values!Object

DSL method : prepare



24
25
26
27
28
# File 'lib/handlers/attributes.rb', line 24

def affect_prepared_values!
  (upper(:@@preparers) || []).each do |preparer|
    @params[preparer[:key]] = @params[preparer[:key]].try(preparer[:method_to_call])
  end
end

#affect_relation_values!Object

DSL method : relation



42
43
44
# File 'lib/handlers/attributes.rb', line 42

def affect_relation_values!
  Relations.new(@klass).affect_relation_values!
end

#handleObject



8
9
10
11
12
13
14
15
# File 'lib/handlers/attributes.rb', line 8

def handle
  start_with_default_params!
  affect_prepared_values!
  merge_with_resource_attributes!
  affect_relation_values!
  merge_overrided_params!
  slice_unauthorized_attributes!
end

#merge_overrided_params!Object

DSL method : ensure_value



36
37
38
39
# File 'lib/handlers/attributes.rb', line 36

def merge_overrided_params!
  overrided_params = upper(:@@overrided_params) || {}
  @params.merge!(overrided_params)
end

#merge_with_resource_attributes!Object



30
31
32
33
# File 'lib/handlers/attributes.rb', line 30

def merge_with_resource_attributes!
  return unless @resource.respond_to?(:attributes)
  @params.reverse_merge!(@resource.attributes.symbolize_keys)
end

#slice_unauthorized_attributes!Object

DSL method : attributes



47
48
49
50
# File 'lib/handlers/attributes.rb', line 47

def slice_unauthorized_attributes!
  authorized_attributes = upper(:@@attributes) || {}
  @params.slice!(*authorized_attributes)
end

#start_with_default_params!Object

DSL method : set_default



18
19
20
21
# File 'lib/handlers/attributes.rb', line 18

def start_with_default_params!
  default_params = upper(:@@default_params) || {}
  @params.reverse_merge!(default_params)
end