Sha256: 6d361dc20af9630fb3cf761967569f946685f978f97ea02bf8166d8a5372119e

Contents?: true

Size: 1.38 KB

Versions: 20

Compression:

Stored size: 1.38 KB

Contents

# frozen-string-literal: true

module Sequel
  module Plugins
    # The before_after_save plugin reorders some internal
    # Sequel operations so they happen before after_create,
    # after_update, and after_save are called, instead of
    # after.  These operations are:
    # 
    # * Resetting the explicit modified flag
    # * Refreshing the model or clearing changed columns after creation
    #
    # This behavior will become the default in Sequel 5.
    #
    # Usage:
    #
    #   # Make all model subclasses perform the operations before after_save
    #   Sequel::Model.plugin :before_after_save
    #
    #   # Make the Album class perform the operations before after_save
    #   Album.plugin :before_after_save
    module BeforeAfterSave
      module InstanceMethods
        private

        # Refresh and reset modified flag right after INSERT query.
        def _after_create(pk)
          super
          @modified = false
          pk ? _save_refresh : changed_columns.clear
        end

        # Don't refresh or reset modified flag, as it was already done.
        def _after_save(pk)
          if @was_new
            @was_new = nil
          else
            @columns_updated = nil
          end
        end

        # Refresh and reset modified flag right after UPDATE query.
        def _after_update
          super
          @modified = false
        end
      end
    end
  end
end

Version data entries

20 entries across 19 versions & 2 rubygems

Version Path
tdiary-5.0.5 vendor/bundle/gems/tdiary-5.0.4/vendor/bundle/gems/sequel-4.44.0/lib/sequel/plugins/before_after_save.rb
tdiary-5.0.5 vendor/bundle/gems/sequel-4.44.0/lib/sequel/plugins/before_after_save.rb
tdiary-5.0.4 vendor/bundle/gems/sequel-4.44.0/lib/sequel/plugins/before_after_save.rb
sequel-4.44.0 lib/sequel/plugins/before_after_save.rb
sequel-4.43.0 lib/sequel/plugins/before_after_save.rb
sequel-4.42.1 lib/sequel/plugins/before_after_save.rb
sequel-4.42.0 lib/sequel/plugins/before_after_save.rb
sequel-4.41.0 lib/sequel/plugins/before_after_save.rb
sequel-4.40.0 lib/sequel/plugins/before_after_save.rb
sequel-4.39.0 lib/sequel/plugins/before_after_save.rb
tdiary-5.0.2 vendor/bundle/gems/sequel-4.37.0/lib/sequel/plugins/before_after_save.rb
sequel-4.38.0 lib/sequel/plugins/before_after_save.rb
sequel-4.37.0 lib/sequel/plugins/before_after_save.rb
sequel-4.36.0 lib/sequel/plugins/before_after_save.rb
tdiary-5.0.1 vendor/bundle/gems/sequel-4.35.0/lib/sequel/plugins/before_after_save.rb
sequel-4.35.0 lib/sequel/plugins/before_after_save.rb
sequel-4.34.0 lib/sequel/plugins/before_after_save.rb
sequel-4.33.0 lib/sequel/plugins/before_after_save.rb
sequel-4.32.0 lib/sequel/plugins/before_after_save.rb
sequel-4.31.0 lib/sequel/plugins/before_after_save.rb