zooniverse/Talk-Api

View on GitHub
lib/pundit/not_authorized_error.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
94%
require 'pundit'

module Pundit
  class NotAuthorizedError < Error
    def initialize(options = { })
      message = if options.is_a?(String)
        options
      else
        @query = options[:query]
        @record = options[:record]
        @policy = options[:policy]
        options.fetch(:message) { "not allowed to #{ query.sub /\?$/, '' } this #{ name_of record }" }
      end

      super message
    end

    def name_of(record)
      case record
      when ActiveRecord::Relation
        record.klass.name
      else ActiveRecord::Base
        record.model_name.name
      end
    rescue
      ''
    end
  end
end