Sha256: 6024a68ddbd0a8ac5cc84a18639d0d63e2282712a8b61584d8a18a7b689b0ec3

Contents?: true

Size: 829 Bytes

Versions: 2

Compression:

Stored size: 829 Bytes

Contents

# frozen_string_literal: true

module MiniDefender::HandlesValidationErrors
  extend ActiveSupport::Concern

  included do
    rescue_from MiniDefender::ValidationError, with: :handle_validation_error
  end

  private

  def handle_validation_error(error)
    respond_to do |format|
      format.html do
        flash[:error] = error.message
        flash[:validation_errors] = error.errors
        flash[:old_values] = safe_values

        redirect_back fallback_location: root_path
      end

      format.json do
        render json: { message: error.message, errors: error.errors }, status: :unprocessable_entity
      end
    end
  end

  def safe_values
    forbidden_keys = %w[password password_confirmation]

    params.to_unsafe_h
      .deep_stringify_keys
      .reject { |k, _| forbidden_keys.include?(k) }
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mini_defender-0.3.12 lib/mini_defender/handles_validation_errors.rb
mini_defender-0.3.11 lib/mini_defender/handles_validation_errors.rb