Sha256: 200afd26cf166db2e3c0d30cb5b4f1145aa4877e7dc5e44deef4c7f3d9297ef8

Contents?: true

Size: 1.45 KB

Versions: 6

Compression:

Stored size: 1.45 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
        # SEQUEL5: Make module empty as it will be the default behavior
        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

6 entries across 6 versions & 2 rubygems

Version Path
sequel-4.49.0 lib/sequel/plugins/before_after_save.rb
sequel-4.48.0 lib/sequel/plugins/before_after_save.rb
tdiary-5.0.5 vendor/bundle/gems/sequel-4.47.0/lib/sequel/plugins/before_after_save.rb
sequel-4.47.0 lib/sequel/plugins/before_after_save.rb
sequel-4.46.0 lib/sequel/plugins/before_after_save.rb
sequel-4.45.0 lib/sequel/plugins/before_after_save.rb