是否有任何简单的角色教程?我发现Devise很棒&轻松解决授权问题。然后谈到Cancan with Rolify时,像我这样的初学者会出现混乱的日食。
目前我在 ability.rb :
中定义了角色if user.has_role? :admin
can :manage, :all
else
can :read, :all
end
然后,在控制器中,我在这个例子中进行检查:
def destroy
ability = Ability.new(current_user)
if ability.can? :delete, :all then
@post = Post.find(params[:id])
@post.destroy
end
respond_to do |format|
...
end
我的问题是 - 我有一种奇怪的感觉,检查 if ability.can? :delete,:all then then 在本例中是多余的。那么我的代码是好还是我真的弄错了?感谢
答案 0 :(得分:1)
检查是否可以删除相关帖子更有意义。管理员可以删除任何内容,但普通用户只能删除他们拥有的内容。
@post = Post.find(params[:id])
authorize! :delete, @post
我还建议您花一些时间阅读cancan的文档,因为您的代码并不真正匹配。
答案 1 :(得分:0)
我认为你的“破坏”方法可能就像:
def destroy
@post = Post.find(params[:id])
if can? :delete, @post then
@post.destroy
end
respond_to do |format|
...
end
因为在cancan的doc:
然后可以使用can检查当前用户的权限?和 不能?视图和控制器中的方法。