0

我已经使用下面的链接使用 active_admin 实现了 cancan。 https://github.com/gregbell/active_admin/wiki/How-to-work-with-cancan

就我而言,唯一的变化是在书面代码下方。应用程序/模型/ability.rb

class Ability
  include CanCan::Ability

  def initialize(user)

    user ||= AdminUser.new # guest user (not logged in)

    if user.id == 1  
      can :manage, :all      
      puts ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> manage all"
    else
      can :read, :all
      puts ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> read all"
    end
  end
end

现在只需在 user.id 上设置条件。所以当我运行我的应用程序时,我可以看到我的 put 正确登录。

问题:

  • 因此,如果我使用用户 whos user.id != 1 登录,那么我也可以在 active_admin 中管理我的所有模块。康康能力对我不起作用。

(简而言之,我可以:代码在任何情况下都不起作用)

使用 rails 3.1.1、cancan 1.6.7、activeadmin 0.4.4、ruby 1.9.3

正确遵循链接中的命令,仔细检查。

在 AdminUser 中使用了 authorize_resource。

使用社交而不是设计,这件事会影响康康吗?

4

1 回答 1

1

我在 /admin 的每个模型中的代码中编写以下代码

然后我在能力模型中的条件开始工作。

  menu :if => proc{ can?(:manage, #ModelName) }     
  controller.authorize_resource 

在发布这个问题之前,我只是在管理员用户中编写了上面的代码

于 2012-05-30T04:09:08.263 回答