【问题标题】:Can't manage models from rails_admin with CanCan无法使用 CanCan 从 rails_admin 管理模型
【发布时间】:2014-04-27 14:40:15
【问题描述】:

我有一个用户模型和一个管理员模型。我同时使用 CanCan 和 Devise。我使用 rails_admin,但是当我想从我的 rails_admin 列出或编辑用户时,我遇到了一个神秘的错误。

Processing by RailsAdmin::MainController#index as HTML
Parameters: {"model_name"=>"user"}
Admin Load (0.4ms)  SELECT `admins`.* FROM `admins` WHERE `admins`.`id` = 1 ORDER BY `admins`.`id` ASC LIMIT 1
Completed 500 Internal Server Error in 9ms

NameError (uninitialized constant User::Permission):

我认为 User::Permission 来自 CanCan,但我不确定。

当我尝试编辑属于某个用户的许多其他模型时,我遇到了几乎相同的错误。但是错误发生了变化:

ActionView::Template::Error (uninitialized constant User::Permission):

我的能力模型

class Ability
    include CanCan::Ability

    def initialize(resource)

        # Define guest user role
        if !resource
            resource = User.new
            resource.role = "guest"
        end

        # Authorizations for admins
        if resource.class == Admin 
            can :dashboard
            can :access, :rails_admin
            can :manage, User # I delete all models for the topic
            can :manage, Piggybak.config.manage_classes.map(&:constantize)
            Piggybak.config.extra_abilities.each do |extra_ability|
                can extra_ability[:abilities], extra_ability[:class_name].constantize
            end
        end

        # Authorizations for users
        if resource.class == User
            case resource.role
                # Guest
                when "guest"
                    can :create, User
                # Freemium
                when "member"
                    can :manage, User

            end
        end
    end
end

【问题讨论】:

  • 你能展示一下ability model/s 吗?
  • @artmees 我编辑了我的答案
  • 你能不能也给你提供用户模型,如果你有一个自定义的管理视图

标签: ruby-on-rails devise cancan rails-admin


【解决方案1】:

我重新安装了我所有的 gem:rails_admin、CanCan 和 Devise。 有用 ! 很奇怪的错误...

【讨论】:

    【解决方案2】:

    我建议您将 CanCan 更新为 CanCanCan。这是康康人,维护得比较好。

    【讨论】:

    • 感谢您的建议,但我仍然有同样的错误。
    【解决方案3】:

    你可能在添加 CanCan 后忘记运行 bundle install

    【讨论】:

      【解决方案4】:

      检查你的用户模型,找到 attr Permission。如果没用就删掉。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多