我有一个用户模型和一个管理员模型。我同时使用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