module Discard::Model

def _raise_record_not_discarded

def _raise_record_not_discarded
  raise ::Discard::RecordNotDiscarded.new(discarded_fail_message, self)
end

def _raise_record_not_undiscarded

def _raise_record_not_undiscarded
  raise ::Discard::RecordNotUndiscarded.new(undiscarded_fail_message, self)
end

def discard

Returns:
  • (Boolean) - true if successful, otherwise false
def discard
  return false if discarded?
  run_callbacks(:discard) do
    update_attribute(self.class.discard_column, Time.current)
  end
end

def discard!

Raises:
  • (Discard::RecordNotDiscarded) -

Returns:
  • (Boolean) - true if successful
def discard!
  discard || _raise_record_not_discarded
end

def discarded?

Returns:
  • (Boolean) - true if this record has been discarded, otherwise false
def discarded?
  self[self.class.discard_column].present?
end

def discarded_fail_message

def discarded_fail_message
  return "A discarded record cannot be discarded" if discarded?
  "Failed to discard the record"
end

def undiscard

Returns:
  • (Boolean) - true if successful, otherwise false
def undiscard
  return false unless discarded?
  run_callbacks(:undiscard) do
    update_attribute(self.class.discard_column, nil)
  end
end

def undiscard!

Raises:
  • (Discard::RecordNotUndiscarded) -

Returns:
  • (Boolean) - true if successful
def undiscard!
  undiscard || _raise_record_not_undiscarded
end

def undiscarded?

Returns:
  • (Boolean) - false if this record has been discarded, otherwise true
def undiscarded?
  !discarded?
end

def undiscarded_fail_message

def undiscarded_fail_message
  return "An undiscarded record cannot be undiscarded" if undiscarded?
  "Failed to undiscard the record"
end