sign_in_and_redirect如何设计工作?

if @user.persisted? sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? else session["devise.facebook_data"] = request.env["omniauth.auth"] redirect_to new_user_registration_url end 

这种方法存在于facebook omniauth callbacks controller 。 我面临的问题是我没有从facebook获取用户的电话号码,因此@user不是有效的对象(我有validation )。 所以,我想将用户重定向到另一个我可以询问电话号码的页面。

如何修改sign_in_and_redirect @user以将我重定向到该页面而不是根url。

Sign_in_and_redirect方法使用after_sign_in_path_for方法确定登录后用户重定向的位置 。

您可以轻松自定义after_sign_in_path_for方法以检查手机是否存在,并调用超级或重定向到用户可以输入其电话号码的页面。