以稳定的方式处理配置文件创建



我一直在思考创建概要文件生成功能的更好方法是RESTwise。

这个想法是,我的菜单总是有一个指向用户配置文件的链接,无论它是否生成。然而,用户必须在第一时间生成配置文件,然后将其显示给他们。

为了说明,可以有一个菜单项指向"/profiles/new",并在用户首次创建配置文件后动态更改为"profile/:id"。这看起来很自然,但我不喜欢我必须在应用程序控制器中获得@profile实例变量(因为每次都必须检查它,才能动态生成链接)。

另一个想法是进行重定向,可能是两者中最好的一个。用户单击/profiles/new路径(或别名),然后重定向到"profile/:id"(如果他们已经设置了配置文件)。

你认为最好的方法是什么?还有其他我没有想到的选择吗?

重定向对我来说没有什么意义,RESTwise,因为它在/profile/new中引入了一个不明确的资源,但我认为你不一定每次都需要获得@profile。假设user_signed_in?是一个助手,它可以确认用户(current_user)实际上已经登录,那么您可以在应用程序助手目录中创建一个链接助手,如下所示:

def link_to_user_profile(html = {})
  if user_signed_in?
    @profile = current_user.profile
    link = profile_path(@profile)
    text = 'Your Profile'
  else
    link = new_profile_path
    text = 'Create a Profile'
  end
  link_to text, link, html
end

我到处都在编造变量,但希望这能有所帮助!

您还可以考虑为具有默认值的用户构建一个新的配置文件after_create。在这种情况下,用户将始终具有默认配置文件。

最新更新