Sha256: 3282b24e1895ea8d607b6897a84d46dcb1a303a07cfd2a82f4db178df819c346

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

module Calagator
  module DuplicateChecking
    module ControllerActions
      # GET /#{model_class}/duplicates
      def duplicates
        @type = params[:type] || 'na'
        @grouped = model_class.find_duplicates_by_type(@type)
      rescue ArgumentError => e
        @grouped = {}
        flash[:failure] = e.to_s
      end

      # POST /#{model_class}/squash_multiple_duplicates
      def squash_many_duplicates
        master = model_class.find_by(id: params[:master_id])
        duplicate_ids = params.keys.grep(/^duplicate_id_\d+$/) { |t| params[t].to_i }
        duplicates = model_class.where(id: duplicate_ids)

        squasher = model_class.squash(master, duplicates)
        if squasher.success
          flash[:success] = squasher.success
        else
          flash[:failure] = squasher.failure
        end
        redirect_to action: 'duplicates', type: params[:type]
      end

      private

      def model_class
        # Derive model class from controller name
        "Calagator::#{controller_name.singularize.titleize}".constantize
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
calagator-1.1.0 lib/calagator/duplicate_checking/controller_actions.rb