2016-11-11 80 views
1

我需要帮助来使用ActiveAdmin配置CanCanCan。我还有其他一切工作,包括设计。我可以使用设计来限制菜单,但是如果您知道该URL可以表示进行编辑,您仍然可以编辑该资源。我想限制一个普通用户编辑/创建任何资源,但它似乎不起作用。需要帮助来配置CanCanCan for activeadmin

Active_Admin.rb

config.cancan_ability_class = ActiveAdmin::CanCanAdapter 

Ability.rb(简单开箱)

class Ability 
    include CanCan::Ability 

    def initialize(user) 
    # Define abilities for the passed in user here. For example: 
    # 
     # user ||= User.new # guest user (not logged in) 
     if user.admin? 
     can :manage, Student 
     else 
     can :read, Student 
     end 
end 
end 

用户模型。

admin:boolean 

如果我登录的用户不是管理员,我仍然可以创建/编辑/删除,我只是想限制他们只读。

请帮我解决这个唯一需要完成的功能。

在此先感谢

回答

3

更改此认为:

config.authorization_adapter = ActiveAdmin::CanCanAdapter 
config.cancan_ability_class = Ability 

authorization_adapter告诉活跃管理的适配器应该使用。 cancan_ability_class告诉适配器应该使用哪个类。

如果仍然不起作用,请尝试将Ability重命名为AdminAbility

+1

感谢您回复。我添加了能力类,但是现在它进入永久循环,并且说即使它是,localhost也不会启动。 我也重命名为AdminAbility类,但它给了我未初始化的常量AdminAbility(NameError)在服务器上启动 – Waqas

+0

嘿,只是为了让我知道后,我玩了更多,我得到它的工作,你的答案是正确的,我是刚刚得到白页,当我检查日志时,表示没有该页面的权限,我认为这是一个循环,但它没有。谢谢 – Waqas