Как использовать волшебство с rails_admin - PullRequest
0 голосов
/ 23 октября 2018

Я бы хотел защитить страницы rails_admin с помощью гема sorcery.Согласно этому SO-ответу , способ сделать это следующий:

# config/initializers/rails_admin.rb
RailsAdmin.config do |config|
  config.authenticate_with do
    # Use sorcery's before filter to auth users
    require_login
  end
end

# app/controllers/application_controller.rb
class ApplicationController
  # Overwrite the method sorcery calls when it
  # detects a non-authenticated request.
  def not_authenticated
    # Make sure that we reference the route from the main app.
    redirect_to main_app.login_path
  end
end

Это переопределяет метод колдовства по умолчанию для обработки отсутствия входа в систему.Переопределение работает в моем приложении, но когда я посещаю страницы rails_admin, я получаю следующую ошибку:

 undefined local variable or method `root_path' for #<RailsAdmin::MainController. 

, поэтому переопределение не работает в коде rails_admin.Я монтирую rails_admin внизу моего файла маршрутов с помощью

# config/routes.rb
...
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

Как мне это исправить?

1 Ответ

0 голосов
/ 01 ноября 2018

Это потому, что контроллер rails_admin не наследуется от моего контроллера приложений.Существует параметр конфигурации rails_admin, который устанавливает это наследование, т.е.

#config/initializers/rails_admin.rb
RailsAdmin.config do |config|
  ...
  config.parent_controller = 'ApplicationController'
end
...