前提・実現したいこと
自分はgemを使わずにログイン機能と新規登録機能を作成しました。
そして次の段階として管理画面を作ろうと思い色々ググった結果rails_adminをインストールして使用することにしました。
しかし、rails_adminの設定の方法を見るとdeviceでログイン機能を作った場合の方法しか書かれてなく、とりあえず方法通りに手を動かしました。
すると以下のようなエラーがで出来ました。
ちなみにid=1のユーザーにだけ管理者権限を渡しています。そしてcancanもインストールしています。
発生している問題・エラーメッセージ
指示通り進めてmodel/ability.rbで
def initialize(user) if user && user.admin? can :access, :rails_admin can :manage, :all end end
と書くと下のようなエラーが出ました。
しかし、2行目と5行目を抜くとエラーは解決するもののid=1のユーザー以外がid=1のページに行くと誰でも管理画面に入れるようになります。
該当のソースコード
config/initializers/rails_admin.rb
RailsAdmin.config do |config| ### Popular gems integration ## == Devise == # config.authenticate_with do # warden.authenticate! scope: :user # end # config.current_user_method(&:current_user) ## == Cancan == config.authorize_with :cancan ## == Pundit == # config.authorize_with :pundit ## == PaperTrail == # config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0 ### More at https://github.com/sferik/rails_admin/wiki/Base-configuration ## == Gravatar integration == ## To disable Gravatar integration in Navigation Bar set to false # config.show_gravatar = true config.actions do dashboard # mandatory index # mandatory new export bulk_delete show edit delete show_in_app ## With an audit adapter, you can add: # history_index # history_show end end
users/show.html.erb
<% provide(:page_title,@user.name) %> <!-- <div class="row"> <aside class="col-md-4"> <section class="user_info"> <h1> <%= @user.name %> </h1> </section> </aside> </div> --> <% if @user.try(:admin?) %> <div class="page-header"> <h1>管理者マイページ</h1> </div> <p class="admin_btn col-xs-offset-1 col-xs-10 col-xs-offset-1"> <%= link_to "管理画面", "/admin" %> </p> <% else %> <div class="page-header"> <h1>マイページ<br> <small><%= @user.name %>さん、こんにちは!</small> </h1> </div> <% end %>
試したこと
config/initializers/rails_admin.rbでDeviceのコメントアウトを外したりつけたり。
model/ability.rbで
def initialize(user) if user && user.admin? can :access, :rails_admin can :manage, :all end end
にしたり
def initialize(user) if user.try(:admin?) can :access, :rails_admin can :manage, :all end end
にしたり。
どなたか原因が分かる方がいましたお願いします。
あなたの回答
tips
プレビュー