module ActiveScaffold::UnsavedRecord

a simple (manual) unsaved? flag and method. at least it automatically reverts after a save!

Public Instance Methods

keeping_errors() { || ... } click to toggle source
# File lib/active_scaffold/extensions/unsaved_record.rb, line 18
def keeping_errors
  old_errors = errors.dup if errors.present?
  result = yield
  old_errors&.each do |e|
    if e.is_a?(String) || e.is_a?(Symbol)
      # Rails <6.1 errors API.
      old_errors[e].each { |msg| errors.add(e, msg) unless errors.added?(e, msg) }
    else
      # Rails >=6.1 errors API (https://code.lulalala.com/2020/0531-1013.html).
      errors.add(e.attribute, e.message) unless errors.added?(e.attribute, e.message)
    end
  end
  result && old_errors.blank?
end
save(**) click to toggle source

automatically unsets the unsaved flag

Calls superclass method
# File lib/active_scaffold/extensions/unsaved_record.rb, line 14
def save(**)
  super.tap { self.unsaved = false }
end
unsaved=(val) click to toggle source

acts like a dirty? flag, manually thrown during update_record_from_params.

# File lib/active_scaffold/extensions/unsaved_record.rb, line 4
def unsaved=(val)
  @unsaved = val ? true : false
end
unsaved?() click to toggle source

whether the unsaved? flag has been thrown

# File lib/active_scaffold/extensions/unsaved_record.rb, line 9
def unsaved?
  @unsaved
end