Cancan与active_admin不兼容

时间:2012-05-28 12:36:30

标签: ruby-on-rails-3 cancan activeadmin

我已使用下面的链接使用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上。 因此,当我运行我的应用程序时,我可以看到我的投注正确登录。

问题:

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

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

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

正确连接后续命令,双重检查。

在AdminUser中使用authorize_resource。

使用socery not design,这会影响康康吗?

1 个答案:

答案 0 :(得分:1)

我在/ admin

中的每个模型的代码中编写以下代码

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

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

在发布此问题之前,我只在管理员用户

中编写了上述代码