Module: ControlledVersioning::ActsAsVersionable::InstanceMethods

Defined in:
lib/controlled_versioning.rb

Instance Method Summary collapse

Instance Method Details

#initial_versionObject



79
80
81
82
83
84
85
# File 'lib/controlled_versioning.rb', line 79

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

#is_a_nested_association?Boolean



69
70
71
# File 'lib/controlled_versioning.rb', line 69

def is_a_nested_association?
  self.class.is_a_nested_association?
end

#submit_revision(suggested_attributes) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/controlled_versioning.rb', line 87

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

#versionable_attributesObject



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

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