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
- .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
68 69 70 71 72 73 74 75 76 |
# File 'app/forms/tramway/core/application_form.rb', line 68 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
54 55 56 57 |
# File 'app/forms/tramway/core/application_form.rb', line 54 def association(property) properties property @@associations = ((defined?(@@associations) && @@associations) || []) + [property] end |
.enumerized_attributes ⇒ Object
86 87 88 |
# File 'app/forms/tramway/core/application_form.rb', line 86 def enumerized_attributes @@enumerized_attributes end |
.full_class_name_association(association_name) ⇒ Object
78 79 80 |
# File 'app/forms/tramway/core/application_form.rb', line 78 def full_class_name_association(association_name) full_class_name_associations[association_name] end |
.full_class_name_associations ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'app/forms/tramway/core/application_form.rb', line 59 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
90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'app/forms/tramway/core/application_form.rb', line 90 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
104 105 106 |
# File 'app/forms/tramway/core/application_form.rb', line 104 def model_class=(name) @@model_class = name end |
.properties(*props) ⇒ Object
41 42 43 |
# File 'app/forms/tramway/core/application_form.rb', line 41 def properties(*props) props.each { |prop| property prop } end |
.property(prop) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'app/forms/tramway/core/application_form.rb', line 45 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
82 83 84 |
# File 'app/forms/tramway/core/application_form.rb', line 82 def reflect_on_association(*args) @@model_class.reflect_on_association(*args) end |
.validates(attribute, **options) ⇒ Object
108 109 110 111 112 113 |
# File 'app/forms/tramway/core/application_form.rb', line 108 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 |