Class: Tramway::Core::ApplicationForm
- Inherits:
-
Object
- Object
- Tramway::Core::ApplicationForm
- Extended by:
- Tramway::Core::ApplicationForms::AssociationClassHelpers, Tramway::Core::ApplicationForms::ConstantClassActions
- 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
- .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
- .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
.association(property) ⇒ Object
50 51 52 53 |
# File 'app/forms/tramway/core/application_form.rb', line 50 def association(property) properties property @@associations = ((defined?(@@associations) && @@associations) || []) + [property] end |
.enumerized_attributes ⇒ Object
78 79 80 |
# File 'app/forms/tramway/core/application_form.rb', line 78 def enumerized_attributes @@enumerized_attributes end |
.full_class_name_association(association_name) ⇒ Object
70 71 72 |
# File 'app/forms/tramway/core/application_form.rb', line 70 def full_class_name_association(association_name) full_class_name_associations[association_name] end |
.full_class_name_associations ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/forms/tramway/core/application_form.rb', line 55 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
82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'app/forms/tramway/core/application_form.rb', line 82 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
96 97 98 |
# File 'app/forms/tramway/core/application_form.rb', line 96 def model_class=(name) @@model_class = name end |
.properties(*props) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'app/forms/tramway/core/application_form.rb', line 41 def properties(*props) @@properties ||= [] @@properties += props props.each do |prop| delegate prop, to: :model define_method("#{prop}=") { |value| model.send "#{prop}=", value } end end |
.reflect_on_association(*args) ⇒ Object
74 75 76 |
# File 'app/forms/tramway/core/application_form.rb', line 74 def reflect_on_association(*args) @@model_class.reflect_on_association(*args) end |
.validates(attribute, **options) ⇒ Object
100 101 102 103 104 105 |
# File 'app/forms/tramway/core/application_form.rb', line 100 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 |