2013-01-13 58 views
0

我是新来的铁轨,我使用设计认证。在路由级别设置权限?

我有一条路径叫做/users/5/events/1/add_images,如果@user == current_user,current_user只能访问到这个路由。设置此权限的最佳方式是什么?这应该在控制器级别上完成吗?

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

回答

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 

这是一般的想法,读其余的文件。

+0

特别是@user和current_user)不存在路由级别 –

+0

谢谢,这解决了我的问题! – bjoern

+0

是的,我意识到用户通过已经是current_user – bjoern