我可能会以错误的方式解决这个问题...所以,如果你有一个更优雅的解决方案,我会全力以赴。
想象一下,我正在建立一个像Kickstarter这样的系统。我希望我的用户能够在我要求他们注册之前指定他们想要承诺的金额。
然后,如果他们没有注册,我需要他们注册,然后再将他们放回他们刚刚登录时的流程.Devise通过将用户重定向回{{1默认情况下最终为after_sign_up_path_for
。
因此,这将始终发出GET请求。但是,如果我从POST收到他们想要承诺的数量的数据,那就丢失了。
唯一的方法是将这些发布的数据存储在会话中吗?或者是否有一种聪明的方法可以在没有用户的情况下开始创建承诺记录(无需运行作业来销毁孤立的承诺记录)?
答案 0 :(得分:1)
我发现这篇博文中描述的方法在highgroove.com上非常有趣: http://highgroove.com/articles/2012/10/09/lazy-user-registration-for-rails-apps.html
基本思想是始终有一个匿名用户,即使当前的游客没有注册。像这样你可以创建例如通常的关联和 - 一旦访问者实际注册 - 您编辑用户而不是所有关联的对象。
如果用户没有注册,您只需查找已弃用的用户帐户并删除它们,包括其关联,而不是寻找所有类型的废弃模型。