Module: Trasher

Defined in:
lib/trasher.rb,
lib/trasher/version.rb,
lib/trasher/trashable.rb

Defined Under Namespace

Modules: ClassMethods, Trashable Classes: Error, MissingColumn, TrashedWithoutTrashedBy

Constant Summary collapse

VERSION =
'0.1.1'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.deleted_at_column?(klass) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/trasher.rb', line 27

def self.deleted_at_column?(klass)
  klass.columns.map(&:name).include?('deleted_at')
end

.deleted_by_column?(klass) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/trasher.rb', line 31

def self.deleted_by_column?(klass)
  klass.columns.map(&:name).include?('deleted_by_id')
end

.included(base) ⇒ Object



20
21
22
23
24
25
# File 'lib/trasher.rb', line 20

def self.included(base)
  unless base.ancestors.include?(ActiveRecord::Base)
    raise "You can only include this if #{base} extends ActiveRecord::Base"
  end
  base.extend(ClassMethods)
end

Instance Method Details

#recover!Object



36
37
38
# File 'lib/trasher/trashable.rb', line 36

def recover!
  _trash(nil, nil)
end

#trash!(trashed_by, trashed_at = nil) ⇒ Object



29
30
31
32
33
34
# File 'lib/trasher/trashable.rb', line 29

def trash!(trashed_by, trashed_at = nil)
  raise TrashedWithoutTrashedBy unless trashed_by.present?

  trashed_at ||= DateTime.now
  _trash(trashed_at, trashed_by.try(:id))
end

#trashed?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/trasher/trashable.rb', line 25

def trashed?
  deleted_at.present?
end