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