2016-10-11 16 views
5

Używałem rails_admin v0.7.0 z gemem prześwitu z powodzeniem do tego punktu. Próbowałem zaktualizować rails_admin do v1.0 dzisiaj, ale otrzymuję niezdefiniowany błąd zmiennej lub metody dla current_user. W wersji 0.7.0 wydaje się, że RailsAdmin::MainController dziedziczy po ApplicationController, podczas gdy w wersji 1.0 dziedziczy bezpośrednio od ActionController::Base, co wyjaśniałoby, że current_user jest teraz niezdefiniowane (uważam, że current_user jest zdefiniowane w ApplicationController z klejnotem czystości). Jednak, ponieważ nie znajduję nikogo innego z tym problemem, myślę, że muszę czegoś nie zauważyć.'current_user' niezdefiniowany w rails_admin z zezwoleniem

Nie byłem tym, który ustanowił zezwolenie na tę aplikację, ale nie sądzę, że robimy coś niestandardowego, co wpłynęłoby na to. Clearance::Controller jest zawarty w ApplicationController. Brak specjalnej definicji current_user.

config/inicjalizatory/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 

Odpowiedz

8

Masz rację, że Rails Admin dziedziczy z ::ActionController::Base domyślnie, a to, co jest przyczyną problemu. Na szczęście poprawka jest prosta. Dodaj config.parent_controller = "::ApplicationController" do 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 

Utworzyłem reference repo here dla porównania, jeśli jest to potrzebne.

+0

Świetna odpowiedź dla wydania 'rails_admin'. –

+0

Potrzebowałem tego do integracji z Sorcery w aplikacji Rails 5, dzięki! –

+0

Zmagałem się z tym problemem przez * godziny *. Dzięki! – daybreaker