2011-05-06 137 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

那么,登录操作是做什么的?

最有可能的是,它在会话中设置了一些指示用户已登录的内容。在创建用户之后,您可以做到这一点。

调用控制器动作没有意义,因为它很可能与视图/表单联系在一起。

请提供更多关于登录操作的信息,如果您仍然觉得需要通过它。