我已经按照cancancan wiki中的指南,了解了如何使用cancancan对rails_admin的管理员进行身份验证。它到目前为止工作,但当我尝试使用具有管理员权限的帐户访问管理仪表板时,我遇到了错误
RailsAdmin :: MainController#dashboard中的NoMethodError
未定义的方法' new'为零:NilClass
发生了什么以及我该如何解决这个问题?
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
具体细节:
rails 5.1.5
cancancan 2.1.3
rails_admin 1.3.0
设计4.4.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:安装
然后我给他覆盖了