2016-10-11 8 views
5

rails_admin v0.7.0を使用していますが、この時点でクリアランスgemが正常に上がっています。今日rails_adminをv1.0にアップデートしようとしましたが、未定義の変数やメソッドのエラーがcurrent_userになっています。 v0.7.0では、RailsAdmin::MainControllerApplicationControllerから継承されていますが、v1.0ではActionController::Baseから直接継承されているため、current_userは未定義です(私はcurrent_userがクリアランスgemで定義されていると思います)。しかし、私はこの問題で他の誰かを見つけることができないので、私は何かを欠けているに違いないと思っています。rails_adminでcurrent_userが定義されていません

私はこのアプリでクリアランスを設定した人ではありませんでしたが、私はそれに影響する非標準のことはしていないと思います。 Clearance::ControllerApplicationControllerに含まれています。 current_userの特別な定義はありません。

設定/初期化子/ 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 

答えて

8

あなたはRailsの管理者は、デフォルトで::ActionController::Baseから継承し、それはあなたの問題を引き起こしているものであることが正しいです。幸いにも、修正は簡単です。 config/initializers/rails_admin.rbconfig.parent_controller = "::ApplicationController"を追加します。

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 

あなたがそれを必要とする場合、私は比較のためreference repo hereを作成しました。

+0

「rails_admin」の問題に対する素晴らしい回答です。 –

+0

Rails 5アプリでSorceryとの統合にこれが必要でした。ありがとう! –

+0

私はこの問題を*時間*と取り組んでいました。ありがとう! – daybreaker

関連する問題