module Mongoid::Verbalize::Versioning
Private Instance Methods
all_verbalized_field_values()
click to toggle source
# File lib/mongoid/verbalize/versioning.rb, line 67 def all_verbalized_field_values [self.class.verbalized_field_values(self) + self.class.verbalized_children(self).map do |child| self.class.verbalized_field_values(child) end].flatten end
create_new_version()
click to toggle source
# File lib/mongoid/verbalize/versioning.rb, line 39 def create_new_version return if embedded? # Only do this on the root document # Do a first pass to see if any verbalized field has changed any_field_changed = false iterate_all_verbalized_fields do |document, field| any_field_changed = true if field.demongoize(document.read_attribute(field.name)).changed? end return unless any_field_changed run_callbacks :create_version do # Calculate new version number previous_version = self.verbalized_versions.last.version if self.verbalized_versions.last.present? next_version_number = previous_version.present? ? previous_version + 1 : 0 self.verbalized_versions.build(:version => next_version_number) # Apply this new version number to verbalized fields iterate_all_verbalized_fields do |document, field| field_value = field.demongoize(document.read_attribute(field.name)) field_value.prepare_for_save(next_version_number) document.write_attribute(field.name, field_value) end end # Reset _children so that Mongoid persists verbalized_versions correctly @_children = nil end
current_version()
click to toggle source
# File lib/mongoid/verbalize/versioning.rb, line 80 def current_version self.verbalized_versions.last.version end
iterate_all_verbalized_fields(&block)
click to toggle source
# File lib/mongoid/verbalize/versioning.rb, line 73 def iterate_all_verbalized_fields(&block) self.class.iterate_verbalized_fields(self, &block) self.class.verbalized_children(self).each do |child| self.class.iterate_verbalized_fields(child, &block) end end