我有一个User.create
操作,暂时注册新用户并发送带有生成密码的电子邮件。完成该操作的最类似Rails的方法是什么?我想从现在开始做好一切。不再胡说八道。这次我很认真。
我认为这些是选择......
创建一个名为login_email_sent.html.haml
的视图并进行渲染。 (它会有一条消息,比如“谢谢,您的登录信息已经发送了。”
创建一个名为create.html.haml
的视图,让Rails默认渲染它。
将用户重定向到与刚刚提交的表单相同的页面,并在闪存中显示消息。
或其他什么......?
答案 0 :(得分:6)
这更像是一个用户体验问题。
将create操作保留为刚创建且没有输出的内容(或者如果由API调用创建,则只保留简单的201 Created
标头)。做一个redirect_to
:
在99.9%的情况下,您不需要创建模板。
def create
User.create(...)
respond_to do |format|
format.html { redirect_to signup_complete_url }
format.xml { render :head => :created }
end
end
例如。
答案 1 :(得分:4)
绝对是选项3,重定向到show动作。执行此操作时,将在操作完成时重定向用户,因此不能通过返回历史记录而意外重新发布。 此外,这可确保渲染页面可以加入书签/保存。
答案 2 :(得分:1)
将它们重定向到登录页面,并显示一条Flash消息,告知他们检查他们的电子邮件,以获取有关验证和登录其帐户的进一步说明。许多人建议在用户验证时自动登录用户,但在我看来,这是任何敏感站点的安全问题。
答案 3 :(得分:1)
这取决于他们是否可以在您的网站上进行任何有用的操作而无需注册。如果有,则将它们重定向到主页并使用闪存显示一条消息,说明已发送电子邮件并邀请他们在此期间环顾四周。
如果他们无能为力,那么你可以将它们重定向到一个带有信息/常见问题解答的欢迎页面,以帮助他们抢先一步,让他们觉得他们已经注册了一些有价值的东西。
另外,不要在电子邮件中向他们发送密码,而是考虑向他们发送指向用户帐户设置页面的链接,以便他们设置密码和其他详细信息。该链接将包含与新用户帐户关联的后门访问代码。提交并验证此页面后,可以删除后门代码。
对于忘记密码,可以使用相同的方法,只要用户设置新密码或者他们记住密码并正常登录,后门代码就会被删除。
这种方法的唯一问题是它们最终会在您的网站上打开两个浏览器窗口或标签。但它确实让您有机会询问您可能需要的任何其他信息 - 地址,DOB或其他任何信息 - 而不会通过在您的初始注册表单上添加太多问题来吓跑人们。