Class: Tramway::Core::ApplicationForm
- Inherits:
-
Object
- Object
- Tramway::Core::ApplicationForm
- Extended by:
- Tramway::Core::ApplicationForms::AssociationClassHelpers, Tramway::Core::ApplicationForms::ConstantClassActions, Tramway::Core::ApplicationForms::Frontend
- Includes:
- Tramway::Core::ApplicationForms::AssociationObjectHelpers, Tramway::Core::ApplicationForms::ConstantObjectActions, Tramway::Core::ApplicationForms::ObjectHelpers, Tramway::Core::ApplicationForms::PropertiesObjectHelper, Tramway::Core::ApplicationForms::SubmitHelper
- 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
- .add_polymorphic_association(hash, association, options) ⇒ Object
- .association(property) ⇒ Object
- .enumerized_attributes ⇒ Object
- .full_class_name_association(association_name) ⇒ Object
- .full_class_name_associations ⇒ Object
- .model_class ⇒ Object
- .model_class=(name) ⇒ Object
- .properties(*props) ⇒ Object
- .property(prop) ⇒ 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
Constructor Details
#initialize(object = nil) ⇒ ApplicationForm
Returns a new instance of ApplicationForm.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/forms/tramway/core/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/core/application_form.rb', line 10 def @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/core/application_form.rb', line 69 def add_polymorphic_association(hash, association, ) if &.dig(:polymorphic) hash.merge association => @@model_class.send("#{association}_type").values elsif hash.merge(association => ([:class_name] || association.to_s.camelize).constantize) else hash end end |
.association(property) ⇒ Object
55 56 57 58 |
# File 'app/forms/tramway/core/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/core/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/core/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/core/application_form.rb', line 60 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&. add_polymorphic_association hash, association, end end |
.model_class ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'app/forms/tramway/core/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, :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
105 106 107 |
# File 'app/forms/tramway/core/application_form.rb', line 105 def model_class=(name) @@model_class = name end |
.properties(*props) ⇒ Object
42 43 44 |
# File 'app/forms/tramway/core/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/core/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/core/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/core/application_form.rb', line 109 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
31 32 33 |
# File 'app/forms/tramway/core/application_form.rb', line 31 def associations @@associations end |
#model_name ⇒ Object
27 28 29 |
# File 'app/forms/tramway/core/application_form.rb', line 27 def model_name @@model_class.model_name end |