2

我可能以错误的方式处理这个问题......所以如果你有一个更优雅的解决方案,我会全神贯注。

想象一下,我正在制作一个像 Kickstarter 这样的系统。我希望我的用户能够在我要求他们注册之前指定他们想要承诺多少。

然后,如果他们没有注册,我需要他们先注册,然后再将他们放回他们刚刚登录的流程中。Devise 通过将用户重定向回默认情况下使这after_sign_up_path_for变得after_sign_in_path_for容易.

所以这总是会发出一个 GET 请求。但是,如果我有从 POST 收到的数据,其中包含他们想要承诺的金额,但那会丢失。

将发布的数据存储在会话中的唯一方法是这样做吗?或者是否有一种聪明的方法可以在没有用户的情况下开始创建质押记录(无需运行作业来销毁孤立的质押记录)?

4

1 回答 1

1

我发现 highgroove.com 上这篇博文中描述的方法在这方面非常有趣:http:  //highgroove.com/articles/2012/10/09/lazy-user-registration-for-rails-apps.html

基本思想是始终有一个匿名用户在手边,即使当前的访问者没有注册。像这样,您可以像往常一样创建例如关联,并且——一旦访问者实际注册——您编辑用户而不是所有关联对象。

如果用户从未注册,您可以简单地查找废弃的用户帐户并将其删除,包括他们的关联,而不是查找所有类型的废弃模型。

于 2012-11-08T10:26:26.023 回答