Sha256: 57d5679290a661f25b4f3da9ff6230ccbae8f5fcafdd2c7897eb003c74dd8902

Contents?: true

Size: 1.02 KB

Versions: 17

Compression:

Stored size: 1.02 KB

Contents

# a simple (manual) unsaved? flag and method. at least it automatically reverts after a save!
module ActiveScaffold::UnsavedRecord
  # acts like a dirty? flag, manually thrown during update_record_from_params.
  def unsaved=(val)
    @unsaved = val ? true : false
  end

  # whether the unsaved? flag has been thrown
  def unsaved?
    @unsaved
  end

  # automatically unsets the unsaved flag
  def save(**)
    super.tap { self.unsaved = false }
  end

  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
end
ActiveRecord::Base.class_eval { include ActiveScaffold::UnsavedRecord }

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
active_scaffold-4.0.2 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.12 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-4.0.1 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.11.1 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-4.0.0 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-4.0.0.rc3 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.11 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-4.0.0.rc2 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.10 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-4.0.0.rc1 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.8 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.7 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.6 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.5 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.2 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.1 lib/active_scaffold/extensions/unsaved_record.rb
active_scaffold-3.7.0 lib/active_scaffold/extensions/unsaved_record.rb