在路由级别设置权限?

时间:2013-01-13 21:27:52

标签: ruby-on-rails devise ruby-on-rails-3.2

我是rails的新手,我正在使用设计进行身份验证。

我有一个名为/users/5/events/1/add_images的路由,current_user只有@user == current_user才能访问该路由。设置此权限的最佳方法是什么?这应该在控制器级别完成吗?

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:3)

是的,它应该在控制器级别完成。

您可以使用cancan gem来处理授权。

https://github.com/ryanb/cancan

http://railscasts.com/episodes/192-authorization-with-cancan

粗略地说,你必须定义能力:

can :add_images, Event do |event|
    event.user.id == user.id
end

在events_controller中,添加before_filter

before_filter :find_event # set @event
before_filter :authorize_add_images, only: :add_images

def authorize_add_images
    authorize! :add_images, @event
end

这是一般性的想法,请阅读其余的文档。