2011-05-06 138 views
0

在我的users_controller中有兩種方法signup_processlogin。我想在呼叫成功signup_process後自動爲用戶撥打loginRails 3-在創建帳戶後自動登錄用戶

這可能嗎?在其他語言框架中,我通常只會通過signup_process操作直接調用login控制器操作,傳遞用戶名和密碼 - 但我認爲這在Rails中令人不悅。

是否有一些方法,而不是用戶數據到我的控制器的動作users.login

這一定是一種常見模式 - 我錯過了什麼? :)

在此先感謝!

+0

是'登錄'一個純粹的方法還是鏈接到一個視圖? – apneadiving 2011-05-06 20:54:54

+0

如果成功,登錄方法將重定向到站點的私有部分。但它需要發佈參數,即登錄表單。 – 2011-05-06 21:13:06

回答

2

不知道你的意思是通過在皺起了眉頭,但這裏有一個方法

class UsersController < ... 
    def signup 
     // Do some stuff 
     do_login(username, password) 
     // render or redirect as you wish 
    end 

    def login 
    do_login(username,password) 
    // render or redirect as you wish 
    end 

    private 
    def do_login(username,password) 
    // do the actual login processing 
    // can even render or redirect here if it's common to both setup and login 
    end 

end 

,你會想什麼做?

+0

我同意,將純粹的「登錄」功能抽象爲私有方法。讓你的行爲方法成爲「純粹的」請求終點。動作(控制器中的公共方法)理想情況下應該只讀取參數,在模型上調用方法並呈現結果或重定向。真正的商業邏輯理想地屬於模型。是的,從另一個行爲引用一個行爲並不酷。 – 2011-05-06 22:33:32

0

那麼,登錄操作是做什麼的?

最有可能的是,它在會話中設置了一些指示用戶已登錄的內容。在創建用戶之後,您可以做到這一點。

調用控制器動作沒有意義,因爲它很可能與視圖/表單聯繫在一起。

請提供更多關於登錄操作的信息,如果您仍然覺得需要通過它。

相關問題