我有一个用户模型和一个管理员模型。我同时使用 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
最佳答案
我重新安装了我所有的 gem:rails_admin、CanCan 和 Devise。 有用 ! 非常奇怪的错误...
https://stackoverflow.com/questions/23324741/