Sha256: 27aec534f75a90e7219d42476913e5faa50e7d21a771c032906caa91a93f365f

Contents?: true

Size: 1.35 KB

Versions: 4

Compression:

Stored size: 1.35 KB

Contents

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

4 entries across 4 versions & 1 rubygems

Version Path
sequel-4.30.0 lib/sequel/plugins/before_after_save.rb
sequel-4.29.0 lib/sequel/plugins/before_after_save.rb
sequel-4.28.0 lib/sequel/plugins/before_after_save.rb
sequel-4.27.0 lib/sequel/plugins/before_after_save.rb