我有一個控制器,基於登錄用戶在兩個不同的「上下文」中運行(基本上,用戶可以在他們自己的帳戶上執行CRUD操作,並且管理員用戶可以刪除所有用戶帳戶;上下文之間的操作是相同的,但權限不同)。append_before_filter在生產模式下
def ensure_logged_in
if user_context?
self.class.append_before_filter :authorize_user
else
self.class.append_before_filter :authorize_admin
end
end
此外,ensure_logged_in
只呼籲採取具體行動:
爲了推動這項工作,我過濾器檢查的背景和濾波器之前附加正確的特定上下文的許可之前,寫了一
before_filter :ensure_logged_in, :only => [:show, :edit, :update]
這在開發模式下工作得非常好,但是一旦代碼在生產中,我們開始體驗奇怪的行爲(即用戶被要求登錄以進行不需要登錄的操作;有一個在控制器中對夫婦打開視圖操作)。
我的猜測是,因爲開發每次頁面重新加載類,append_before_filter
調用僅適用於該頁命中,但由於生產緩存類,調用append_before_filter
將其追加用於控制器的後續使用。這是一個有效的假設嗎?如果是這樣,我能做些什麼呢?
無需那些回報,但除此之外,這聽起來像一個很好的解決方案。 – coreyward 2011-04-27 17:54:22
coreyward是對的,我只是非常明確! – ctcherry 2011-04-27 17:55:02
是的,這就是我最終做的(沒有'return's)。我不確定爲什麼我決定使用'append_before_filter'而不是直接調用方法! – 2011-04-27 17:55:20