【问题标题】:Rails admin and cancancan, undefined method `new' for nil:NilClassRails admin 和 cancancan,nil:NilClass 的未定义方法“new”
【发布时间】:2018-09-09 01:36:15
【问题描述】:

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

RailsAdmin::MainController#dashboard 中的 NoMethodError

nil:NilClass 的未定义方法“新”

https://imgur.com/bKE5mv6

发生了什么,我该如何解决?


能力.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


具体说明:

导轨 5.1.5

cancancan 2.1.3

rails_admin 1.3.0

设计 4.4.3

【问题讨论】:

    标签: ruby-on-rails rails-admin


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

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

      $ rails g rails_admin:install

      然后我给他overwrite YES

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 您能详细说明这修复了什么吗?也许添加一个链接到这个宝石?
        • https://github.com/sudosu/rails_admin_pundit 这是 gem 的链接,它完全可以通过 rails admin 进行配置。不同之处在于,在 CanCan 中,我们定义了能力类,但在 pundit 中,我们为每个模型定义了 policies,并将 rails admin 的配置更改为 config.authorize_with :pundit
        • 链接是https://github.com/sudosu/rails_admin_pundit,实际上我遇到了CANCANRails Admin 的2,3 个不同的问题,我试图修复它们,进行了一些研发,但一无所获。所以我切换到 Pundit,我建议在你的情况下,如果你没有找到任何帮助,你也应该切换到 Pundit。 :)
        • 嘿,Jeff,你解决了 CanCan 的问题吗?如果是这样,那么你能分享一下修复吗:)
        • 我自己不是在做这个;我在审核此内容时添加了一条评论,以鼓励您添加指向该 gem 的链接,您已经这样做了。可悲的是,我没有其他东西可以为此提供。对不起!
        猜你喜欢
        • 2019-06-24
        • 2015-07-20
        • 1970-01-01
        • 2017-06-06
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多