我一直在思考创建概要文件生成功能的更好方法是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
。在这种情况下,用户将始终具有默认配置文件。