forked from rich/acts_as_revisable
/
deletable.rb
33 lines (28 loc) · 944 Bytes
/
deletable.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
module WithoutScope
module ActsAsRevisable
module Deletable
def self.included(base)
base.instance_eval do
define_callbacks :before_revise_on_destroy, :after_revise_on_destroy
end
end
def destroy
now = Time.zone.now
prev = self.revisions.first
self.revisable_deleted_at = now
self.revisable_is_current = false
self.revisable_current_at = if prev
prev.update_attribute(:revisable_revised_at, now)
prev.revisable_revised_at + 1.second
else
self.created_at
end
self.revisable_revised_at = self.revisable_deleted_at
return false unless run_callbacks(:before_revise_on_destroy) { |r, o| r == false}
returning(self.save(:without_revision => true)) do
run_callbacks(:after_revise_on_destroy)
end
end
end
end
end