Class: Tramway::ApplicationForm
- Inherits:
-
Object
- Object
- Tramway::ApplicationForm
show all
- Extended by:
- Tramway::ApplicationForms::AssociationClassHelpers, Tramway::ApplicationForms::ConstantClassActions, Tramway::ApplicationForms::Frontend
- Includes:
- Tramway::ApplicationForms::AssociationObjectHelpers, Tramway::ApplicationForms::ConstantObjectActions, Tramway::ApplicationForms::ObjectHelpers, Tramway::ApplicationForms::PropertiesObjectHelper, Tramway::ApplicationForms::SubmitHelper
- Defined in:
- app/forms/tramway/application_form.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of ApplicationForm.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'app/forms/tramway/application_form.rb', line 12
def initialize(object = nil)
tap do
@object = object
@@model_class = object.class
@@enumerized_attributes = object.class.try :enumerized_attributes
@@associations ||= []
self.class.full_class_name_associations&.each do |association, class_name|
define_association_method association, class_name
end
delegating object
end
end
|
Instance Attribute Details
#submit_message ⇒ Object
Returns the value of attribute submit_message.
10
11
12
|
# File 'app/forms/tramway/application_form.rb', line 10
def submit_message
@submit_message
end
|
Class Method Details
.add_polymorphic_association(hash, association, options) ⇒ Object
69
70
71
72
73
74
75
76
77
|
# File 'app/forms/tramway/application_form.rb', line 69
def add_polymorphic_association(hash, association, options)
if options&.dig(:polymorphic)
hash.merge association => @@model_class.send("#{association}_type").values
elsif options
hash.merge(association => (options[:class_name] || association.to_s.camelize).constantize)
else
hash
end
end
|
.association(property) ⇒ Object
55
56
57
58
|
# File 'app/forms/tramway/application_form.rb', line 55
def association(property)
properties property
@@associations = ((defined?(@@associations) && @@associations) || []) + [property]
end
|
.enumerized_attributes ⇒ Object
87
88
89
|
# File 'app/forms/tramway/application_form.rb', line 87
def enumerized_attributes
@@enumerized_attributes
end
|
.full_class_name_association(association_name) ⇒ Object
79
80
81
|
# File 'app/forms/tramway/application_form.rb', line 79
def full_class_name_association(association_name)
full_class_name_associations[association_name]
end
|
.full_class_name_associations ⇒ Object
60
61
62
63
64
65
66
67
|
# File 'app/forms/tramway/application_form.rb', line 60
def full_class_name_associations
@@associations&.reduce({}) do |hash, association|
options = @@model_class.reflect_on_all_associations(:belongs_to).select do |a|
a.name == association.to_sym
end.first&.options
add_polymorphic_association hash, association, options
end
end
|
.model_class ⇒ Object
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'app/forms/tramway/application_form.rb', line 91
def model_class
if defined?(@@model_class) && @@model_class
@@model_class
else
model_class_name ||= name.to_s.sub(/Form$/, '')
begin
@@model_class = model_class_name.constantize
rescue StandardError
Tramway::Error.raise_error :tramway, :application_form, :model_class, :there_is_not_model_class,
name: name, model_class_name: model_class_name
end
end
end
|
.model_class=(name) ⇒ Object
105
106
107
|
# File 'app/forms/tramway/application_form.rb', line 105
def model_class=(name)
@@model_class = name
end
|
.properties(*props) ⇒ Object
42
43
44
|
# File 'app/forms/tramway/application_form.rb', line 42
def properties(*props)
props.each { |prop| property prop }
end
|
.property(prop) ⇒ Object
46
47
48
49
50
51
52
53
|
# File 'app/forms/tramway/application_form.rb', line 46
def property(prop)
@@properties ||= []
@@properties << prop
delegate prop, to: :model
define_method("#{prop}=") do |value|
model.send "#{prop}=", value
end
end
|
.reflect_on_association(*args) ⇒ Object
83
84
85
|
# File 'app/forms/tramway/application_form.rb', line 83
def reflect_on_association(*args)
@@model_class.reflect_on_association(*args)
end
|
.validates(attribute, **options) ⇒ Object
109
110
111
112
113
114
|
# File 'app/forms/tramway/application_form.rb', line 109
def validates(attribute, **options)
if !defined?(@@model_class) || @@model_class.nil?
Tramway::Error.raise_error(:tramway, :application_form, :validates, :you_need_to_set_model_class)
end
@@model_class.validates attribute, **options
end
|
Instance Method Details
#associations ⇒ Object
31
32
33
|
# File 'app/forms/tramway/application_form.rb', line 31
def associations
@@associations
end
|
#model_name ⇒ Object
27
28
29
|
# File 'app/forms/tramway/application_form.rb', line 27
def model_name
@@model_class.model_name
end
|