0
NoMethodError at /
protected method `policy' called for #<RailsAdmin::MainController:0x007ff5e5d1a528>
Did you mean?  policies

Here's the first thing it looks at in the error page (this is in the gemfile code)

# This method is called to find authorization policy
        def policy(record)
          begin
            @controller.policy(record)
          rescue ::Pundit::NotDefinedError
            ::ApplicationPolicy.new(@controller.send(:pundit_user), record)
          end
        end
        private :policy

Getting this error when I try to visit /admin - nothing changed, was working fine in 5.1.6.. I didn't change the policy.rb file, i didn't change any controller code, nothing was changed at all apart from a gemfile update to go to rails 5.2.1

My application policy..

class ApplicationPolicy
  attr_reader :user, :record

  def initialize(user, record)
    @user = user
    @record = record
  end

  def index?
    false
  end

  def show?
    scope.where(:id => record.id).exists?
  end

  def create?
    false
  end

  def new?
    create?
  end

  def update?
    false
  end

  def edit?
    update?
  end

  def destroy?
    false
  end

  def scope
    Pundit.policy_scope!(user, record.class)
  end

  class Scope
    attr_reader :user, :scope

    def initialize(user, scope)
      @user = user
      @scope = scope
    end

    def resolve
      scope
    end
  end

 def rails_admin?(action)
        case action
        when :dashboard
            @user.admin?
        when :index
            @user.admin?
        when :show
            @user.admin?
        when :new
            @user.admin?
        when :edit
            @user.admin?
        when :destroy
            @user.admin?
        when :export
            @user.admin?
        when :history
            @user.admin?
        when :show_in_app
            @user.admin?
        else
            raise ::Pundit::NotDefinedError, "unable to find policy #{action} for #{record}."
        end
    end



end

I don't know what caused this to happen.. can't find anything on Google and the gem rails admin pundit was last updated a year ago.

mazing
  • 603
  • 1
  • 6
  • 21

1 Answers1

1

Make sure you have

config.parent_controller = "::ApplicationController"

on your config/initializers/rails_admin.rb, to indicate who's the parent controller. This solved it for me.