Sequel::Plugins::

SoftDeletes module

Plugin for adding soft-delete to a model.

== Example

Defining a model class with a timestamp as the deletion flag:

class ACME::User < Sequel::Model( :users )

  plugin :soft_deletes, column: :deleted_at

  set_schema( :users ) do
      primary_key :id
      # ...
      timestamp :deleted_at
  end

end

Constants

DEFAULT_OPTIONS

Default plugin options

Public Class Methods

configure( model, opts=DEFAULT_OPTIONS )

Sequel plugin API – called everytime the plugin is loaded into the class, after it is loaded into the class.

   # File lib/sequel/plugins/soft_deletes.rb
40 def self::configure( model, opts=DEFAULT_OPTIONS )
41     opts = DEFAULT_OPTIONS.merge( opts )
42     column = opts[:column]
43     unless model.respond_to?( :log )
44         model.extend( Loggability )
45         model.log_to( :sequel_soft_deletes )
46     end
47     model.soft_delete_column = column
48     model.dataset_module do
49         def deleted
50             column = self.model.soft_delete_column
51             exclude( column => nil )
52         end
53 
54 
55         def undeleted
56             column = self.model.soft_delete_column
57             where( column => nil )
58         end
59     end
60 
61     if opts[:omit_by_default]
62         self.log.debug "Setting default dataset to omit soft-deleted"
63         model.set_dataset( model.where( column => nil ) )
64     end
65 end

Public Instance Methods

deleted()
   # File lib/sequel/plugins/soft_deletes.rb
49 def deleted
50     column = self.model.soft_delete_column
51     exclude( column => nil )
52 end
undeleted()
   # File lib/sequel/plugins/soft_deletes.rb
55 def undeleted
56     column = self.model.soft_delete_column
57     where( column => nil )
58 end