2011-03-14 53 views
4

我在AuthLogic和current_user中遇到了一些問題。Current_user在使用AuthLogic在ROR中創建會話後無效

我有一個Flex4應用程序,使用Cairngorm框架作爲前端,Ruby On Rails作爲後端。

我可以通過瀏覽器正常登錄,並且只使用ROR。但是,當我嘗試通過我的Flex4應用程序時,它將在第一次失敗,但第二次再次運行。

這是怎麼回事,是user_sessions_controller.rb裏面我要

self.current_user.to_xml;

我第一次調用創建行動的號召,在CURRENT_USER對象返回nil。我第二次調用它時(無需重新啓動服務器或瀏覽器),它將成爲適當的當前用戶。

因此,這使我相信current_user正在我的create動作中的render命令之後的某個時間被設置。

如果我需要我的導軌控制器在創建動作中返回當前用戶,我該如何去做呢?

+0

您能不能告訴我們在控制器的CURRENT_USER方法? – james2m 2011-04-18 15:01:29

回答

2

只是有完全相同的問題...不知道爲什麼會這樣,但我試圖打電話給CURRENT_USER在我創建方法在我user_sessions_controller.rb,解決按以下...

def create 
    @user_session = UserSession.new(params[:user_session]) 

    if @user_session.save 
     current_user = UserSession.find.user 
     current_user.increment_login_count_for_current_memberships! 
     flash[:notice] = 'Sign in successful.' 
     redirect_to root_path 
    else 
     render action: "new" 
    end 
    end 

希望這幫助!

+0

謝謝..我被卡在這裏 – Akshay 2015-06-10 08:13:53

0

這是因爲輔助方法current_user通常被定義爲before_action。也就是說,在創建會話期間,之前的操作沒有運行。

我也用這個UserSession.find.user這個用例非常好。

乾杯, 尼克拉斯