def snap!(options = {})
      data = options.merge(:modifications => self.snap)

      data[:tag]        = self.audit_tag    if self.audit_tag
      data[:action]     = self.audit_action if self.audit_action
      data[:changed_by] = self.audit_changed_by   if self.audit_changed_by

      self.save_audit( data )
    end
def snap!(options = {})
      data = options.merge(:modifications => self.snap)

      data[:tag]        = self.audit_tag    if self.audit_tag
      data[:action]     = self.audit_action if self.audit_action
      data[:changed_by] = self.audit_changed_by   if self.audit_changed_by

      self.save_audit( data )
    end
Take a snapshot of and save the current state of the audited record's audited attributes

 Accept values for :tag, :action and :user in the argument hash. However, these are overridden by the values set by the auditable record's virtual attributes (#audit_tag, #audit_action, #changed_by) if defined