def destroy(options = {:hard => false})
      if options[:hard]
        with_transaction_returning_status do
          hard_destroy_associated_records
          self.reload.hard_destroy
        end
      else
        return true if destroyed?
        with_transaction_returning_status do
          destroy_at = Time.now
          run_callbacks(:destroy){ update_column kakurenbo_column, destroy_at; self }
        end
      end
    end
def destroy(options = {:hard => false})
      if options[:hard]
        with_transaction_returning_status do
          hard_destroy_associated_records
          self.reload.hard_destroy
        end
      else
        return true if destroyed?
        with_transaction_returning_status do
          destroy_at = Time.now
          run_callbacks(:destroy){ update_column kakurenbo_column, destroy_at; self }
        end
      end
    end
destroy record and run callbacks.

 @param options [Hash] options.
 @option options [Boolean] hard (false) if hard-delete.

 @return [Boolean, self] if action is cancelled, return false.