Rails管理员和cancancan,未定义的方法`new'为零:NilClass

时间:2018-03-30 01:15:16

标签: ruby-on-rails rails-admin

我已经按照cancancan wiki中的指南,了解了如何使用cancancan对rails_admin的管理员进行身份验证。它到目前为止工作,但当我尝试使用具有管理员权限的帐户访问管理仪表板时,我遇到了错误

  

RailsAdmin :: MainController#dashboard中的NoMethodError

     

未定义的方法' new'为零:NilClass

https://imgur.com/bKE5mv6

发生了什么以及我该如何解决这个问题?

ability.rb

 if user.admin?
    can :manage, :all
    can :access, :rails_admin # this line
    can :dashboard, :all # and this one
  elsif user.userrole?
    can :read, Item
    can :manage, User, :user_id=>user.id
  else
    can :read, Item
  end

rails_admin.rb

config.authorize_with :cancancan2

根据the rails_admin wiki

具体细节:

rails 5.1.5

cancancan 2.1.3

rails_admin 1.3.0

设计4.4.3

3 个答案:

答案 0 :(得分:2)

rails_admin.rb

  ### Popular gems integration

  ## == Devise ==
  config.authenticate_with do
    warden.authenticate! scope: :user
  end
  config.current_user_method(&:current_user)

  ## == CancanCan ==
  ## 「cancan」 ng
  ## 「cancancan」 ok
  config.authorize_with :cancancan

答案 1 :(得分:0)

我试图修复它,但无法修复,所以我选择了Pundit gem,它与rails admin可以很好地工作,他们也有一个带有rails admin实现的gem,可以使用。荣誉

答案 2 :(得分:0)

我可以通过在终端中重新安装admin_rails gem来解决此问题

$ rails g rails_admin:安装

然后我给他覆盖了