class Aform::FormSaver

Attributes

rollback_klass[R]
transaction_klass[R]

Public Class Methods

new(form, opts = {}) click to toggle source
# File lib/aform/form_saver.rb, line 5
def initialize(form, opts = {})
  @transaction_klass = opts[:transaction_klass] ||= ActiveRecord::Base
  @rollback_klass = opts[:rollback_klass] ||= ActiveRecord::Rollback
  @form = form
end

Public Instance Methods

save() click to toggle source
# File lib/aform/form_saver.rb, line 11
def save
  result = false
  @transaction_klass.transaction do
    result =
      if @form.nested_forms
        @form.form_model.save && save_nested(@form).all?
      else
        @form.form_model.save
      end
    raise(@rollback_klass) unless result
  end
  result
end

Protected Instance Methods

save_nested(form) click to toggle source
# File lib/aform/form_saver.rb, line 27
def save_nested(form)
  form.nested_forms.map do |k, v|
    v.map do |nf|
      result = nf.form_model.save(form.model.send(k))
      save_nested(nf) if nf.nested_forms
      result
    end
  end.flatten
end