无法使用CanCan在rails_admin中管理模型

3

我有一个用户模型和一个管理员模型。我同时使用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 模型吗? - a14m
@artmees 我编辑了我的回答。 - Ludovic
你能提供你的用户模型吗?如果你有自定义的管理员视图,也可以一并提供。 - blotto
4个回答

2

我重新安装了所有的gem包:rails_admin、CanCan和Devise。 它可以工作! 非常奇怪的错误...


1
我建议你将 CanCan 更新到 CanCanCan。这是 CanCan 的一个分支,更受关注。

谢谢您的建议,但我仍然遇到相同的错误。 - Ludovic

0

检查您的用户模型,找到属性Permission。如果无用,请将其删除。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接