2012-01-15 35 views
0

我希望允许管理员使用自定义字段创建帖子,但仍希望他们使用与普通用户使用的相同的创建操作。定义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如何,始终会的,如果用户是管理员还是没有运行。

这很奇怪。我偏离康康手册的唯一方法是:专门化并不实际映射到控制器操作。这很重要吗?

+0

我很好奇,如果你改变你的if语句:'如果能? :specialize,Post',你还会得到同样的东西吗? – Max 2012-01-27 05:52:49

+0

是啊同样的事情= / – 2012-01-28 05:20:26

回答