如何在用户登录后立即将用户发送到他们的个人资料?

我有一个与设计相关的用户模型。 Userinfo模型属于User模型。 userinfo模型通过表单接收一些信息(姓名,电子邮件,学校……)。 现在,只要用户注册或登录,程序就会检查current_user是否填写了信息,如果没有,他们将被路由以填写信息页面。 如果他们填写了信息,他们将被路由到主页,即userinfo索引页面。 索引页面显示站点上所有用户的userinfo。

路由的工作方式:

Userinfo模型:

class Userinfo < ActiveRecord::Base belongs_to :user has_many :videos, through: :user def info_complete? name? && email? && college? && gpa? && major? end end 

应用控制器:

  def after_sign_in_path_for(resource) if resource.userinfo.info_complete? root_path else new_user_info_path end end 

问题

当用户登录时,如果用户填写了userinfo,我希望它转到用户的个人资料页面,而不是索引或根路径。 配置文件路径是“userinfo #show”。 对于userinfo #index,不需要id,但要转到“userinfo#show”,需要id。 因为userinfo #index是’/ userinfos’,而userinfos #show是’/ userinfos / userinfo_id’。 我的问题是,如何在用户登录后将用户路由到userinfo#show,个人资料页面以及是否填写了userinfo数据?

这可能很简单,但我觉得我错过了一些东西。 如何访问应用程序控制器中的当前userinfo_id? 所以我可以像它一样路由它:

  def after_sign_in_path_for(resource) if resource.userinfo.info_complete? userinfo_path(current_user.userinfo_id) else new_user_info_path end end 

或者类似于上面的东西?

正如在这个问题的答案中动态路径助手轨道

 def after_sign_in_path_for(resource) if resource.userinfo.info_complete? user_info_path(current_user.userinfo_id) else new_user_info_path end end