1

我有一個使用Devise進行驗證的Web應用程序。這是一個允許用戶上傳圖片的網站,因此網址將爲/images/2。有一個單獨的圖像控制器。Rails 3.1拒絕編輯其他用戶圖片

我發現用戶可以通過更改URL來編輯他們沒有上傳的圖像,例如, /images/4/edit。有沒有辦法阻止他們編輯其他用戶的圖片,只允許他們編輯自己的圖片?

如果有幫助,則使用rails g scaffold創建圖像控制器,型號等。

回答

3

這有很多不同的解決方案,但最簡單的就是運行編輯/更新時/銷燬從當前用戶,而不是從所有圖像加載圖像:

def edit 
    @image = current_user.images.find(params[:id]) 
end 

def update 
    @image = current_user.images.find(params[:id]) 
    # do whatever has to be done 
end 

def destroy 
    @image = current_user.images.find(params[:id]) 
    # do whatever has to be done 
end 

此外,使用支架是真的不好的做法,你應該寫我們自己的代碼,它更簡單,更高效,並且會讓你理解框架應該如何工作。

你也可以爲此使用嵌套控制器,但你必須研究一下,瞭解它們是如何工作的,以及它們爲什麼可能是更好的解決方案。

+0

完全同意,+1 – apneadiving

+0

非常感謝:) –