我希望允许管理员使用自定义字段创建帖子,但仍希望他们使用与普通用户相同的创建操作。
我想这样做:
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实际上并不映射到控制器动作。那有关系吗?
答案 0 :(得分:1)
您必须在控制器中使用authorize! :specialize, @post
。
https://github.com/ryanb/cancan/wiki/Authorizing-Controller-Actions