2016-10-11 22 views
5

Tôi đã sử dụng rails_admin v0.7.0 với đá quý giải phóng mặt bằng thành công lên điểm này. Tôi đã cố gắng cập nhật rails_admin thành v1.0 ngay hôm nay, nhưng tôi nhận được một biến không xác định hoặc lỗi phương thức cho current_user. Trong v0.7.0, dường như số tiền RailsAdmin::MainController được thừa hưởng từ ApplicationController, trong khi ở v1.0 nó kế thừa trực tiếp từ ActionController::Base, điều này sẽ giải thích current_user hiện không xác định (tôi tin current_user được xác định trong ApplicationController với đá quý giải phóng mặt bằng). Tuy nhiên, vì tôi không tìm thấy ai khác với vấn đề này, tôi nghĩ rằng tôi phải thiếu một cái gì đó.'current_user' không được xác định trong rails_admin với khoảng trống

Tôi không phải là người thiết lập giải phóng mặt bằng trên ứng dụng này, nhưng tôi không nghĩ rằng chúng tôi đang làm bất cứ điều gì không chuẩn với nó sẽ ảnh hưởng đến điều này. Clearance::Controller được bao gồm trong ApplicationController. Không có định nghĩa đặc biệt của current_user.

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 

Trả lời

8

Bạn là chính xác rằng Rails quản trị kế thừa từ ::ActionController::Base theo mặc định, và đó là những gì đang gây ra sự cố. May mắn thay, sửa chữa rất đơn giản. Thêm 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 

Tôi đã tạo một reference repo here để so sánh nếu bạn cần nó.

+0

câu trả lời tuyệt vời cho vấn đề 'rails_admin'. –

+0

Tôi cần điều này để tích hợp với Sorcery trong ứng dụng Rails 5, cảm ơn! –

+0

Tôi đã vật lộn với vấn đề này trong * giờ *. Cảm ơn! – daybreaker

Các vấn đề liên quan