2016-10-11 1 views
5

J'ai utilisé rails_admin v0.7.0 avec la gemme de dégagement avec succès jusqu'à ce point. J'ai essayé de mettre à jour rails_admin à v1.0 aujourd'hui, mais j'obtiens une variable non définie ou une erreur de méthode pour current_user. Dans la version 0.7.0, il apparaît que RailsAdmin::MainController hérite de ApplicationController, alors que dans v1.0 il hérite directement de ActionController::Base, ce qui expliquerait current_user est maintenant indéfini (je crois que current_user est défini dans ApplicationController avec la gemme d'autorisation). Cependant, comme je ne trouve personne d'autre avec ce problème, je pense qu'il me manque quelque chose. Je n'étais pas celui qui a mis en place une autorisation sur cette application, mais je ne pense pas que nous faisons quelque chose de non standard avec cela qui aurait une incidence sur cela. Clearance::Controller est inclus dans ApplicationController. Aucune définition spéciale de current_user.'current_user' indéfini dans rails_admin avec dégagement

config/initializers/rails_admin.rb

RailsAdmin.config do |config| 

    # Popular gems integration 

    ## Clearance 
    config.authorize_with do |controller| 
    unless current_user.admin? 
     redirect_to(
     main_app.root_path, 
     alert: "You are not permitted to view this page" 
    ) 
    end 
    end 

    config.current_user_method { current_user } 
end 

Répondre

8

Vous avez raison que Rails Administrateur hérite de ::ActionController::Base par défaut, et qui est la cause de votre problème. Heureusement, la solution est simple. Ajouter config.parent_controller = "::ApplicationController"-config/initializers/rails_admin.rb:

RailsAdmin.config do |config| 

    ## == Clearance == 
    config.parent_controller = "::ApplicationController" 

    config.authorize_with do |controller| 
    unless current_user && current_user.admin? 
     redirect_to(
     main_app.root_path, 
     alert: "You are not permitted to view this page" 
    ) 
    end 
    end 

    # You actually don't need this line  
    # config.current_user_method { current_user } 
end 

J'ai créé un reference repo here pour comparaison si vous en avez besoin.

+0

bonne réponse pour le problème 'rails_admin'. –

+0

J'avais besoin de cela pour l'intégration avec Sorcery dans une application Rails 5, merci! –

+0

Je luttais avec ce problème pendant * heures *. Merci! – daybreaker