【问题标题】:Cancan is not working well with active_adminCancan 不能很好地与 active_admin 配合使用
【发布时间】:2012-05-28 12:36:29
【问题描述】:

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

就我而言,唯一的变化是在编写的代码下方。 app/models/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 中管理我的所有模块。 cancan 能力对我不起作用。

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

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

正确执行链接中的命令,仔细检查。

在 AdminUser 中使用了 authorize_resource。

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

【问题讨论】:

  • “Cancan 不能很好地与 cancan 配合使用”?
  • 抱歉没找到你? @乔利特
  • 您似乎在说 Cancan 不与自身互操作。我在怀疑这是否真的是你的意思,或者你是否打错了。
  • 是的,cancan 有问题,它不起作用。 can后写的代码不起作用

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多