Class: Tramway::Core::ApplicationForm
- Inherits:
-
Reform::Form
- Object
- Reform::Form
- Tramway::Core::ApplicationForm
- Extended by:
- Tramway::Core::ApplicationForms::ConstantClassActions
- Includes:
- Tramway::Core::ApplicationForms::AssociationObjectHelpers, Tramway::Core::ApplicationForms::ConstantObjectActions, Tramway::Core::ApplicationForms::ObjectHelpers, Tramway::Core::ApplicationForms::PropertiesObjectHelper
- Defined in:
- app/forms/tramway/core/application_form.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#submit_message ⇒ Object
Returns the value of attribute submit_message.
Class Method Summary collapse
- .association(property) ⇒ Object
- .associations(*properties) ⇒ Object
- .enumerized_attributes ⇒ Object
- .full_class_name_association(association_name) ⇒ Object
- .full_class_name_associations ⇒ Object
- .model_class ⇒ Object
- .model_class=(name) ⇒ Object
- .reflect_on_association(*args) ⇒ Object
- .validates(attribute, **options) ⇒ Object
Instance Method Summary collapse
- #associations ⇒ Object
-
#initialize(object = nil) ⇒ ApplicationForm
constructor
A new instance of ApplicationForm.
- #model_name ⇒ Object
- #submit(params) ⇒ Object
Constructor Details
#initialize(object = nil) ⇒ ApplicationForm
Returns a new instance of ApplicationForm.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/forms/tramway/core/application_form.rb', line 11 def initialize(object = nil) object ||= self.class.model_class.new super(object).tap do @@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.
9 10 11 |
# File 'app/forms/tramway/core/application_form.rb', line 9 def end |
Class Method Details
.association(property) ⇒ Object
47 48 49 50 |
# File 'app/forms/tramway/core/application_form.rb', line 47 def association(property) properties property @@associations = ((defined?(@@associations) && @@associations) || []) + [property] end |
.associations(*properties) ⇒ Object
52 53 54 |
# File 'app/forms/tramway/core/application_form.rb', line 52 def associations(*properties) properties.each { |property| association property } end |
.enumerized_attributes ⇒ Object
79 80 81 |
# File 'app/forms/tramway/core/application_form.rb', line 79 def enumerized_attributes @@enumerized_attributes end |
.full_class_name_association(association_name) ⇒ Object
71 72 73 |
# File 'app/forms/tramway/core/application_form.rb', line 71 def full_class_name_association(association_name) full_class_name_associations[association_name] end |
.full_class_name_associations ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'app/forms/tramway/core/application_form.rb', line 56 def full_class_name_associations @@associations&.reduce({}) do |hash, association| = @@model_class.reflect_on_all_associations(:belongs_to).select do |a| a.name == association.to_sym end.first&. if &.dig(:polymorphic) hash.merge! association => @@model_class.send("#{association}_type").values elsif hash.merge!(association => ([:class_name] || association.to_s.camelize).constantize) end hash end end |
.model_class ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/forms/tramway/core/application_form.rb', line 83 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, :core, :application_form, :model_class, :there_is_not_model_class, name: name, model_class_name: model_class_name end end end |
.model_class=(name) ⇒ Object
97 98 99 |
# File 'app/forms/tramway/core/application_form.rb', line 97 def model_class=(name) @@model_class = name end |
.reflect_on_association(*args) ⇒ Object
75 76 77 |
# File 'app/forms/tramway/core/application_form.rb', line 75 def reflect_on_association(*args) @@model_class.reflect_on_association(*args) end |
.validates(attribute, **options) ⇒ Object
101 102 103 104 105 106 |
# File 'app/forms/tramway/core/application_form.rb', line 101 def validates(attribute, **) if !defined?(@@model_class) || @@model_class.nil? Tramway::Error.raise_error(:tramway, :core, :application_form, :validates, :you_need_to_set_model_class) end @@model_class.validates attribute, ** end |
Instance Method Details
#associations ⇒ Object
38 39 40 |
# File 'app/forms/tramway/core/application_form.rb', line 38 def associations @@associations end |
#model_name ⇒ Object
34 35 36 |
# File 'app/forms/tramway/core/application_form.rb', line 34 def model_name @@model_class.model_name end |
#submit(params) ⇒ Object
26 27 28 29 30 31 32 |
# File 'app/forms/tramway/core/application_form.rb', line 26 def submit(params) if params validate(params) ? save : collecting_associations_errors else Tramway::Error.raise_error(:tramway, :core, :application_form, :submit, :params_should_not_be_nil) end end |