在我的项目中,用户只需使用电子邮件地址(无密码)注册,并且只能访问该网站。我想添加功能,以便用户以后可以选择使用Devise设置密码。然后,站点的某些部分将需要身份验证才能访问。
(例如,在Craigslist上,您只需发送电子邮件即可发布,但您可以选择创建一个包含电子邮件/密码的帐户来访问您之前的商家信息。)
在用户模型上使用Devise,如何做到这一点?如果我尝试创建没有密码的用户,Devise当然会抱怨“密码不能为空”。
一个可能的解决方案是拥有两个不同的模型,例如用户(仅限电子邮件)和成员(电子邮件和密码),但我不确定它是否理想,因为用户和成员之间的唯一区别是成员有设置密码。
另一种可能的解决方案是随机生成密码并在不告知用户的情况下保存密码。然后当他们想要创建密码时,强制重置密码。但我不确定这是一个好习惯。
感谢您提供的任何指导。
Rails 4 Ruby 2.1.4
答案 0 :(得分:1)
如果您可以在这里帮忙,我会避免为同一资源使用两种不同的模型。我会考虑使用Devise implementation for a guest user.它会进行一些调整以使其完全符合您的预期,但它提供了一个良好的开端。