Class: Hist::Pending
Class Method Summary
collapse
decode, encode, fix_save_associations, get, include_keys, only_hash_diffs, raw_get, #reify, remove_key, to_json, to_yaml, #without_persisting
Class Method Details
.get_new(klass:, user: nil, extra: nil, only: 'kept') ⇒ Object
34
35
36
37
38
|
# File 'app/models/hist/pending.rb', line 34
def self.get_new(klass:, user: nil, extra: nil, only: 'kept')
hash_versions = self.get_new_raw(klass: klass, user: user, extra: , only: only)
versions = hash_versions.map {|v| v.reify }
versions
end
|
.get_new_raw(klass:, user: nil, extra: nil, only: 'kept') ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'app/models/hist/pending.rb', line 13
def self.get_new_raw(klass:, user: nil, extra: nil, only: 'kept')
if user.nil?
if .nil?
versions = self.where(model: Hist.model(klass: klass), obj_id: nil).send(only).reverse
else
versions = self.where(model: Hist.model(klass: klass), obj_id: nil, extra: ).send(only).reverse
end
else
if .nil?
versions = self.where(model: Hist.model(klass: klass), obj_id: nil, user: user.to_s).send(only).reverse
else
versions = self.where(model: Hist.model(klass: klass), obj_id: nil, user: user.to_s, extra: ).send(only).reverse
end
end
versions
end
|
.put(obj:, user: nil, extra: nil) ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'app/models/hist/pending.rb', line 40
def self.put(obj:, user: nil, extra: nil)
if obj.class.base_class.hist_config.max_pendings >= 0
versions = self.class.raw_get(obj: obj, only: 'discarded')
if versions.size >= obj.class.base_class.hist_config.max_pendings
versions.last.destroy!
end
end
super
end
|
.start_pending ⇒ Object
6
7
8
9
10
11
|
# File 'app/models/hist/pending.rb', line 6
def self.start_pending
ActiveRecord::Base.transaction do
yield
raise ActiveRecord::Rollback, "Don't save pending object changes"
end
end
|