Module: ControlledVersioning::ActsAsVersionable::InstanceMethods

Defined in:
lib/controlled_versioning.rb

Instance Method Summary collapse

Instance Method Details

#initial_versionObject



83
84
85
86
87
88
89
# File 'lib/controlled_versioning.rb', line 83

def initial_version
  if is_a_nested_association?
    version_children.first
  else
    versions.find_by(initial: true)
  end
end

#is_a_nested_association?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/controlled_versioning.rb', line 73

def is_a_nested_association?
  self.class.is_a_nested_association?
end

#submit_revision(suggested_attributes) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/controlled_versioning.rb', line 91

def submit_revision(suggested_attributes)
  assign_attributes(suggested_attributes)
  if invalid?
    errors
  elsif !Revision::Auditor.new(self).changes_original?
    errors[:base] << I18n.t("errors.messages.no_revisions_made")
    errors
  else
    version = versions.build
    Revision::Factory.new(versionable: self, version: version).build
    version.save
    version
  end
end

#versionable_attributesObject



77
78
79
80
81
# File 'lib/controlled_versioning.rb', line 77

def versionable_attributes
  versionable_attributes = self.versionable_attribute_names
  ArrayConverter.to_s!(versionable_attributes)
  self.attributes.slice(*versionable_attributes)
end