在康康中定义无动作能力?

时间:2012-01-15 00:23:05

标签: ruby-on-rails cancan

我希望允许管理员使用自定义字段创建帖子,但仍希望他们使用与普通用户相同的创建操作。

我想这样做:

class Ability
   include CanCan::Ability

   def initialize(user)
      if user.admin?
          can :specialize, Post
      end
   end
end

然后在我的控制器中:

def create
    @post = Post.new
    if can? :specialize, @post
        do_fancy_things_here
    end
end

奇怪的是,无论用户是否是管理员,do_fancy_things_here始终都在运行。

这很奇怪。我偏离cancan手册的唯一方法是:specialize实际上并不映射到控制器动作。那有关系吗?

1 个答案:

答案 0 :(得分:1)

您必须在控制器中使用authorize! :specialize, @post

https://github.com/ryanb/cancan/wiki/Authorizing-Controller-Actions