Module: VestalVersions::Changes
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/vestal_versions/changes.rb
Overview
Provides the ability to manipulate hashes in the specific format that ActiveRecord gives to dirty attribute changes: string keys and unique, two-element array values.
Defined Under Namespace
Modules: HashMethods
Instance Method Summary collapse
-
#changes_between(from, to) ⇒ Object
Collects an array of changes from a record’s versions between the given range and compiles them into one summary hash of changes.
Instance Method Details
#changes_between(from, to) ⇒ Object
Collects an array of changes from a record’s versions between the given range and compiles them into one summary hash of changes. The from
and to
arguments can each be either a version number, a symbol representing an association proxy method, a string representing a version tag or a version object itself.
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/vestal_versions/changes.rb', line 19 def changes_between(from, to) from_number, to_number = versions.number_at(from), versions.number_at(to) return {} if from_number == to_number chain = versions.between(from_number, to_number).reject(&:initial?) return {} if chain.empty? backward = from_number > to_number backward ? chain.pop : chain.shift unless from_number == 1 || to_number == 1 chain.inject({}) do |changes, version| changes.append_changes!(backward ? version.changes.reverse_changes : version.changes) end end |