我有幾個控制器需要一個正確的用戶來編輯/更新/刪除操作。什麼是Rails的方式來實現以下目標:Rails:驗證跨多個控制器的正確用戶
目前,每個控制器我有以下代碼:
class FooController < ApplicationController
before_filter :correct_user, :only => [:edit, :update, :destroy]
# normal controller code
private
def correct_user
@foo = Foo.find params[:id]
redirect_to some_path unless current_user == @foo.user
end
end
我有3個控制器類似的代碼。我開始把它帶到這樣的幫手:
module ApplicationHelper
def correct_user(object, path)
if object.respond_to? :user
redirect_to path unless object.user == current_user
end
end
但我想知道這是否是一個好辦法。什麼是可以接受的解決方法?
謝謝
編輯
這裏的正確的用戶檢查是因爲我要確保這只是筆者誰可以編輯/ deltes到每個對象。
爲了澄清,對象將是問題和帖子。我不想使用CanCan之類的東西,因爲它對於像這樣簡單的東西是過度的。
對不起,應該在我的文章中更好地澄清。請參閱帖子以進行更新。 –
根據我對您的更新的最佳理解,我已經更新了我的答案。 – jefflunt
我可以澄清一下嗎,你是否仍然在你的孩子控制器中以before_filter或者不同的方式調用它?如果是的話,你如何設定對象和路徑? – christian