Class: ActiveFormObjects::Base
- Inherits:
-
Object
- Object
- ActiveFormObjects::Base
show all
- Includes:
- ActiveModel::Model, Relations, Savings
- Defined in:
- lib/active_form_objects.rb
Constant Summary
collapse
- @@authorized_params =
{}
- @@overrided_params =
{}
- @@default_params =
{}
- @@preparers =
{}
- @@resource =
{}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Savings
#save, #save!, #save_associated_forms!, #set_associated_forms, #with_rescue
Methods included from Relations
#affect_relation_values
Constructor Details
#initialize(params, resource = nil) ⇒ Base
Returns a new instance of Base.
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/active_form_objects.rb', line 64
def initialize(params, resource = nil)
@resource = resource || @@resource[self.class.name].try(:call, params).try(:new)
set_associated_forms
params = affect_relation_values(params)
resource_params(params || {})
params_with_resource_attrs = @resource.respond_to?(:attributes) ? @resource.attributes.symbolize_keys.slice(*@authorized_params).merge(@params) : @params
params_with_preprared_value = affect_prepared_values(params_with_resource_attrs)
super(params_with_preprared_value)
end
|
Instance Attribute Details
#resource ⇒ Object
Returns the value of attribute resource.
20
21
22
|
# File 'lib/active_form_objects.rb', line 20
def resource
@resource
end
|
Class Method Details
.attributes(*params) ⇒ Object
35
36
37
38
|
# File 'lib/active_form_objects.rb', line 35
def self.attributes(*params)
@@authorized_params[name] = (@@authorized_params[name] || []) + params
send(:attr_accessor, *params)
end
|
.delegate(*params) ⇒ Object
40
41
42
43
44
45
46
47
|
# File 'lib/active_form_objects.rb', line 40
def self.delegate(*params)
delegator = params.last
params.pop
send(:attributes, *params)
define_method("#{delegator[:to]}_params") do
attrs_only(params)
end
end
|
.ensure_value(param, value) ⇒ Object
57
58
59
60
61
62
|
# File 'lib/active_form_objects.rb', line 57
def self.ensure_value(param, value)
@@overrided_params[name] ||= {}
@@overrided_params[name][param] = value
send(:attributes, param)
end
|
.prepare(*params) ⇒ Object
27
28
29
30
31
32
33
|
# File 'lib/active_form_objects.rb', line 27
def self.prepare(*params)
method_to_call = params.last[:with]
@@preparers[name] = (@@preparers[name] || []) + [{
key: params.first,
method_to_call: method_to_call
}]
end
|
.resource(resource = nil, &block) ⇒ Object
22
23
24
25
|
# File 'lib/active_form_objects.rb', line 22
def self.resource(resource = nil, &block)
bloc_to_call = block || proc { resource }
@@resource[name] = bloc_to_call
end
|
.set_default(params) ⇒ Object
49
50
51
52
53
54
55
|
# File 'lib/active_form_objects.rb', line 49
def self.set_default(params)
[params[:to]].flatten.each do |param|
@@default_params[name] ||= {}
@@default_params[name][param] = params[:value]
end
send(:attributes, *params[:to])
end
|
Instance Method Details
#affect_prepared_values(params) ⇒ Object
75
76
77
78
79
80
|
# File 'lib/active_form_objects.rb', line 75
def affect_prepared_values(params)
(@@preparers[self.class.name] || []).each do |preparer|
params[preparer[:key]] = params[preparer[:key]].try(preparer[:method_to_call])
end
params
end
|
#attributes ⇒ Object
93
94
95
|
# File 'lib/active_form_objects.rb', line 93
def attributes
instance_values.with_indifferent_access.symbolize_keys
end
|
#attrs_only(params) ⇒ Object
89
90
91
|
# File 'lib/active_form_objects.rb', line 89
def attrs_only(params)
attributes.slice(*params)
end
|
#resource_params(params) ⇒ Object
82
83
84
85
86
87
|
# File 'lib/active_form_objects.rb', line 82
def resource_params(params)
@default_params = @@default_params[self.class.name] || {}
@overrided_params = @@overrided_params[self.class.name] || {}
@authorized_params = @@authorized_params[self.class.name] || {}
@params = @default_params.merge(params.to_h.symbolize_keys).merge(@overrided_params).slice(*@authorized_params)
end
|