Ошибка Rails_admin и rails_admin_pundit после обновления до 5.2.1 - PullRequest
0 голосов
/ 09 октября 2018
NoMethodError at /
protected method `policy' called for #<RailsAdmin::MainController:0x007ff5e5d1a528>
Did you mean?  policies

Вот первое, на что он смотрит на странице ошибок (это в коде gemfile)

# 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

Получение этой ошибки при попытке посетить / admin - ничего не изменилось, работалонормально в 5.1.6. Я не изменил файл policy.rb, я не изменил код контроллера, ничего не изменилось, кроме обновления gemfile для перехода на rails 5.2.1

Моя политика в отношении приложений ..

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

Я не знаю, что послужило причиной этого ... не могу найти что-либо в Google, а администратор gem rails последний раз обновлялся год назад.

1 Ответ

0 голосов
/ 17 октября 2018

Убедитесь, что на вашем config/initializers/rails_admin.rb есть

config.parent_controller = "::ApplicationController"

, чтобы указать, кто является родительским контроллером.Это решило это для меня.

...