2009-07-30 68 views
2

在新模型的發佈期間,我正在通過Authlogic檢查身份驗證。創建請求上有一個before_filter。它正在調用require_user。用戶會話成功創建後,將調用redirect_back_or_default(default)方法。問題是,請求需要被髮布到存儲的uri。我試圖存儲該方法並將其輸入到redirect_to,但它不起作用。有任何想法嗎?rails爲redirect_to指定方法

# called before successful authentication with before_filter 
def require_user 
    unless current_user 
    store_location 
    flash[:notice] = "You must be logged in to access this page" 
    redirect_to new_user_session_url 
    return false 
    end 
end 

def store_location 
    session[:return_to] = request.request_uri 
    session[:return_to_method] = request.request_method 
end 

# called after successful authentication 
def redirect_back_or_default(default) 
    redirect_to((session[:return_to] ? session[:return_to] : default), :method => session[:return_to_method]) 
    session[:return_to] = nil 
    session[:return_to_method] = nil 
end 

回答

0

您不能重定向到發佈操作,只能獲取操作。

0

可能存儲後驗證後的處理後對象,但你真的不想這樣做。

爲什麼不簡單地要求對#new方法進行身份驗證,而不是(或者除了)#create?這樣,用戶在填寫表單之前就進行了身份驗證。

+0

感謝您的回答。我最終做的是爲模型添加授權狀態。我允許未經過登錄且初始狀態無效的未授權用戶創建。然後在創建操作中,如果它們未登錄,它將存儲show操作的路徑並重定向到登錄/新用戶頁面。如果他們沒有登錄,那麼模型將永遠不會被驗證,並且會在稍後的日期被收穫。如果他們進行登錄,他們將被重定向回顯示操作,如果該操作是由他們創建的並且他們是logged_in,那麼它將「授權」該模型。 – 2009-07-31 15:26:05