Как заставить Active Admin работать с Pundit после входа в систему

Я добавил в свое приложение авторизацию конфигуратора pundit addapter.

config.authorization_adapter = ActiveAdmin::PunditAdapter

Когда я вхожу в систему с учетными данными [email protected], я получаю эту ошибку.

Pundit::NotDefinedError in Admin::Dashboard#index
unable to find policy AdminUserPolicy

Extracted source (around line #2):

insert_tag active_admin_application.view_factory["page"]

поэтому я создал эти файлы в папке policy/active_admin

adminuser_policy.rb

module ActiveAdmin
class AdminUserPolicy < ApplicationPolicy
class Scope < Struct.new(:user, :scope)
  def resolve
    scope
  end
end
def home?
true
end

def index?
true 
end
def show?
true 
end
def new?
true
end

def create?
 true
end

def update?
true 
end

  def destroy?
    true 
 end
end

конец

page_policy.rb

module ActiveAdmin
class PagePolicy < ApplicationPolicy
  class Scope < Struct.new(:user, :scope)
  def resolve
    scope
  end
 end
   def index?
      true
   end

   def show?
     true
   end
  end
end

Что мне не хватает? Спасибо за помощь!


person user3787971    schedule 11.01.2015    source источник


Ответы (1)


Я нашел ответ!

После добавления этих двух строк в активный файл инициализатора администратора

config.authorization_adapter = ActiveAdmin::PunditAdapter 

#this line sets the default policy to application_policy.rb
config.pundit_default_policy = "ApplicationPolicy"

Мне пришлось добавить это в dashboard.rb в app/admin/dashboard.rb.

def index
  authorize :dashboards, :index?
end

Затем я создал файл в папке с политиками с именем dashboard_policy.rb и добавил этот код.

class DashboardPolicy < ApplicationPolicy
   def dashboard?
   true
  end
  def index?
   true
  end
 end

Это заставило его работать!

person user3787971    schedule 11.01.2015
comment
Да, код, который вы вставили выше, просто сломан. В частности, укажите полное содержимое вашего файла app/admin/dashboard.rb. - person Jesse Sanford; 24.01.2016