Class: Tramway::Core::ApplicationForm

Inherits:
Reform::Form
  • Object
show all
Defined in:
app/forms/tramway/core/application_form.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object) ⇒ ApplicationForm

Returns a new instance of ApplicationForm.



3
4
5
6
7
8
9
10
11
12
13
14
# File 'app/forms/tramway/core/application_form.rb', line 3

def initialize(object)
  super(object).tap do
    @@model_class = object.class
    @@enumerized_attributes = object.class.enumerized_attributes

    self.class.full_class_name_associations.each do |association, class_name|
      self.class.send(:define_method, "#{association}=") do |value|
        super class_name.find value
      end
    end
  end
end

Class Method Details

.association(property) ⇒ Object



32
33
34
35
36
# File 'app/forms/tramway/core/application_form.rb', line 32

def association(property)
  properties property
  @@associations ||= []
  @@associations << property
end

.associations(*properties) ⇒ Object



38
39
40
41
42
# File 'app/forms/tramway/core/application_form.rb', line 38

def associations(*properties)
  properties.each do |property|
    association property
  end
end

.enumerized_attributesObject



58
59
60
# File 'app/forms/tramway/core/application_form.rb', line 58

def enumerized_attributes
  @@enumerized_attributes
end

.full_class_name_association(association_name) ⇒ Object



54
55
56
# File 'app/forms/tramway/core/application_form.rb', line 54

def full_class_name_association(association_name)
  full_class_name_associations[association_name]
end

.full_class_name_associationsObject



44
45
46
47
48
49
50
51
52
# File 'app/forms/tramway/core/application_form.rb', line 44

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
    
    options ? hash.merge!(association => options[:class_name].constantize) : hash
  end
end

.model_classObject



66
67
68
# File 'app/forms/tramway/core/application_form.rb', line 66

def model_class
  @@model_class ||= self.name.to_s.sub(/Form$/, '')
end

.reflect_on_association(*args) ⇒ Object



62
63
64
# File 'app/forms/tramway/core/application_form.rb', line 62

def reflect_on_association(*args)
  @@model_class.reflect_on_association(*args)
end

Instance Method Details

#form_properties(**args) ⇒ Object



21
22
23
# File 'app/forms/tramway/core/application_form.rb', line 21

def form_properties(**args)
  @form_properties = args
end

#propertiesObject



25
26
27
# File 'app/forms/tramway/core/application_form.rb', line 25

def properties
  @form_properties || []
end

#submit(params) ⇒ Object



16
17
18
19
# File 'app/forms/tramway/core/application_form.rb', line 16

def submit(params)
  raise 'ApplicationForm::Params should not be nil'.inspect unless params
  save if validate params
end