2010-07-06 12 views
2

我目前認證用戶可編輯自己的內容僅由:Ruby on Rails的更優雅的方式來驗證用戶只可以編輯自己的內容

@posts = current_user.posts.find(params[:id]) 

是否有更簡單的方式,可以做到這一點所有控制器?

我有一個before_filter,要求用戶必須登錄,但它不檢查個人用戶是誰。

我想知道是否有更優雅的解決方案,只需要對before_filer方法進行一次編輯,而不是在每個需要保護的模型之前放置current_user方法。

回答

0

我在某個時候使用了一個框架,可以讓您在查詢中添加強制性條件,但我認爲這對於Rails來說不是(本地)可能的。可能帶有插件。

但是,有時您會希望超出單個用戶的上下文進行查詢,因此您需要重寫該方法,可能使用before_filter的:except參數。但是你必須記住current_user在例外方法中的東西,需要用戶特定的,忘記指定它可能是非常危險的。

通過以某種方式覆蓋模型的查找功能,您可以爲絕大多數情況保存一點點打字,但是您也會使例外非常難看且具有潛在危險。

1

CanCan是另一種寶石,提供授權功能。它全部由一個ruby文件管理,然後可以通過一條線路集成到控制器中。還有一些視圖助手,因此您可以在視圖中使用<% if can? :update, @article %>

相關問題