Module: PersistentRecord

Defined in:
lib/persistent_record.rb,
lib/persistent_record/version.rb

Defined Under Namespace

Modules: Callbacks, Query

Constant Summary collapse

VERSION =
'0.1.4'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(source) ⇒ Object



8
9
10
11
# File 'lib/persistent_record.rb', line 8

def self.included(source)
  source.extend Query
  source.extend Callbacks
end

Instance Method Details

#deleteObject



77
78
79
80
# File 'lib/persistent_record.rb', line 77

def delete
  return if new_record?
  touch_record_deleted_at_column(false)
end

#destroyObject Also known as: discard



66
67
68
69
# File 'lib/persistent_record.rb', line 66

def destroy
  callbacks_result = run_callbacks(:destroy) { touch_record_deleted_at_column(true) }
  callbacks_result ? self : false
end

#destroy!Object



72
73
74
# File 'lib/persistent_record.rb', line 72

def destroy!
  discarded? ? super : destroy || raise(ActiveRecord::RecordNotDestroyed)
end

#discarded?Boolean

Returns:



93
94
95
# File 'lib/persistent_record.rb', line 93

def discarded?
  !!send(record_deleted_at_column)
end

#restore!(options = {}) ⇒ Object



84
85
86
87
88
89
90
91
# File 'lib/persistent_record.rb', line 84

def restore!(options = {})
  ActiveRecord::Base.transaction do
    run_callbacks(:restore) do
      update_column record_deleted_at_column, nil
      restore_associated_records if options[:recursive]
    end
  end
end