Module: PersistentRecord
- Defined in:
- lib/persistent_record.rb,
lib/persistent_record/version.rb
Defined Under Namespace
Modules: Callbacks, Query
Constant Summary
collapse
- VERSION =
'0.2.2.1'
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(source) ⇒ Object
6
7
8
9
|
# File 'lib/persistent_record.rb', line 6
def self.included(source)
source.extend Query
source.extend Callbacks
end
|
Instance Method Details
#delete ⇒ Object
67
68
69
70
|
# File 'lib/persistent_record.rb', line 67
def delete
return if new_record?
touch_record_deleted_at_column(false)
end
|
#destroy ⇒ Object
Also known as:
discard
56
57
58
59
|
# File 'lib/persistent_record.rb', line 56
def destroy
callbacks_result = run_callbacks(:destroy) { touch_record_deleted_at_column(true) }
callbacks_result ? self : false
end
|
#destroy! ⇒ Object
62
63
64
|
# File 'lib/persistent_record.rb', line 62
def destroy!
discarded? ? super : destroy || raise(ActiveRecord::RecordNotDestroyed)
end
|
#discarded? ⇒ Boolean
83
84
85
|
# File 'lib/persistent_record.rb', line 83
def discarded?
!!send(record_deleted_at_column)
end
|
#force_destroy! ⇒ Object
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/persistent_record.rb', line 87
def force_destroy!
transaction do
run_callbacks(:force_destroy) do
dependent_reflections = self.class.reflections.select do |name, reflection|
reflection.options[:dependent] == :destroy
end
if dependent_reflections.any?
dependent_reflections.each do |name|
associated_records = self.send(name)
associated_records = associated_records.with_discarded if associated_records.respond_to?(:with_discarded)
associated_records.each(&:force_destroy!)
end
end
default_destroy
end
end
end
|
#restore!(options = {}) ⇒ Object
74
75
76
77
78
79
80
81
|
# File 'lib/persistent_record.rb', line 74
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
|