class FreeForm::Form
Public Class Methods
new(h={})
click to toggle source
# File lib/freeform/form.rb, line 31 def initialize(h={}) h.each {|k,v| send("#{k}=",v)} initialize_child_models end
Public Instance Methods
after_save()
click to toggle source
# File lib/freeform/form.rb, line 67 def after_save end
before_save()
click to toggle source
# File lib/freeform/form.rb, line 64 def before_save end
destroy()
click to toggle source
# File lib/freeform/form.rb, line 56 def destroy models.each { |m| m.destroy } end
marked_for_destruction?()
click to toggle source
# File lib/freeform/form.rb, line 60 def marked_for_destruction? respond_to?(:_destroy) ? _destroy : false end
persisted?()
click to toggle source
Instance Methods
# File lib/freeform/form.rb, line 29 def persisted?; false end
save(*args)
click to toggle source
# File lib/freeform/form.rb, line 36 def save(*args) if valid? before_save persist_models reload_models after_save true else false end end
save!(*args)
click to toggle source
# File lib/freeform/form.rb, line 48 def save!(*args) if valid? save else raise FreeForm::FormInvalid, "form invalid." end end
Private Instance Methods
initialize_child_models()
click to toggle source
# File lib/freeform/form.rb, line 71 def initialize_child_models self.class.child_models.each do |c| send("initialize_#{c}") end end
persist_models()
click to toggle source
# File lib/freeform/form.rb, line 77 def persist_models models.each { |m| m.destroy if m.marked_for_destruction? } # We skip validation for underlying models, since we've already run our validation. models.each { |m| m.save(:validate => false) unless m.marked_for_destruction? } end
reload_models()
click to toggle source
TODO: Come up with a test that can validate this behavior
# File lib/freeform/form.rb, line 84 def reload_models models.each do |m| unless m.marked_for_destruction? m.reload if m.respond_to?(:reload) end end end