Sha256: bfc354f5984ae02559793448186ac24cd24745960e024a938b947c87e0d920fa
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
# frozen_string_literal: true require "active_record" require "zeitwerk" loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false) loader.collapse("#{__dir__}/validation_errors") loader.ignore("#{__dir__}/generators") loader.setup module ValidationErrors module Trackable def self.included(base) base.extend ClassMethods end # :nodoc: module ClassMethods def track_validation_errors include InstanceMethods end end module InstanceMethods def update(attributes) super.tap do |result| ValidationError.track(self) unless result end end def update!(attributes) super rescue ActiveRecord::RecordInvalid ValidationError.track(self) raise end def save(**options) super.tap do |result| ValidationError.track(self) unless result || persisted? end end # Attempts to save the record just like {ActiveRecord::Base#save}[rdoc-ref:Base#save] but # will raise an ActiveRecord::RecordInvalid exception instead of returning +false+ if the record is not valid. def save!(**options) super rescue ActiveRecord::RecordInvalid ValidationError.track(self) unless persisted? raise end end end end ActiveRecord::Base.include ValidationErrors::Trackable
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
validation_errors-0.3.0 | lib/validation_errors.rb |