Cleaner module with methods for grouping, analyzing, sorting and then sanitizing(removing) extra versions.
This commit is contained in:
parent
78760bb8c0
commit
dfe5e319ab
|
@ -0,0 +1,47 @@
|
||||||
|
module PaperTrail
|
||||||
|
module Cleaner
|
||||||
|
def gather_all_versions
|
||||||
|
Version.all.group_by(&:item_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_all_keys
|
||||||
|
@versions.keys
|
||||||
|
end
|
||||||
|
|
||||||
|
def grouping_for_key(key)
|
||||||
|
@versions[key].group_by(&:grouping_by_date)
|
||||||
|
end
|
||||||
|
|
||||||
|
def sanitize(group)
|
||||||
|
group.pop
|
||||||
|
if group.size > 0
|
||||||
|
group.each do |member|
|
||||||
|
member.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def analyze_grouping(grouping)
|
||||||
|
grouping.each_value do |group|
|
||||||
|
sanitize(group)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def acquire_version_info
|
||||||
|
@versions = gather_all_versions
|
||||||
|
@keys = get_all_keys
|
||||||
|
end
|
||||||
|
|
||||||
|
def examine_and_clean_versions
|
||||||
|
@keys.each do |key|
|
||||||
|
grouping = grouping_for_key(key)
|
||||||
|
analyze_grouping(grouping)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def clean_paper_trail_versions
|
||||||
|
acquire_version_info
|
||||||
|
examine_and_clean_versions
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue