2013-01-13 56 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