Class: ApplicationForm

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model, ActiveModel::Validations
Defined in:
app/forms/application_form.rb

Direct Known Subclasses

RentForm

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all_fieldsObject



5
6
7
# File 'app/forms/application_form.rb', line 5

def self.all_fields
  @all_fields ||= {}
end

.fields(model, *names) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/forms/application_form.rb', line 9

def self.fields(model, *names)
  unless all_fields.key? model
    attr_reader model

    define_method :"validate_#{model}!" do
      own = send model

      unless own.valid?
        errors.messages.merge!(own.errors.messages) { |_, ary1, ary2| ary1 + ary2 }
        errors.details.merge!(own.errors.details)   { |_, ary1, ary2| ary1 + ary2 }
      end
    end

    validate :"validate_#{model}!"

    all_fields[model] = []
  end

  delegate *names, to: model

  all_fields[model] = all_fields[model] + names
  all_fields[model].uniq!
  all_fields
end

Instance Method Details

#persisted?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/forms/application_form.rb', line 34

def persisted?
  false
end

#to_hObject



38
39
40
# File 'app/forms/application_form.rb', line 38

def to_h
  self.class.all_fields.map { |a| [a, self.send(a)] if self.respond_to?(a) }.compact.to_h
end