我试图自定义Devise注册过程以生成随机密码并将其与确认邮件一起发送.
我已经做的是覆盖默认的Devise:validtable并在需要时生成一个新的随机密码.
before_validation :password_generation
def password_generation
password_confirmation = password = Devise.friendly_token.first(7) if password.nil? || password.blank?
end
现在我的问题是将新生成的随机密码包含在原始确认邮件中.
有没有可能在定制它的新用户进程时跟上Devise的原始可用性,还是应该从头开始构建身份验证过程?
谢谢,
哈达尔.
最佳答案 (四个月来不及,但也许其他人可以使用这个)
大多数情况下,您需要将默认的Devise邮件程序和视图复制到项目中,并在config / initializers / devise.rb中指定config.mailer中的本地类.此时,您可以根据需要自定义电子邮件. (请注意,Devise使用术语资源作为抽象,但大多数情况下它意味着用户的实例).
唯一的技巧是找到一种方法来记住在创建新用户帐户的时间与生成和发送电子邮件之间生成的密码.在保存用户记录时,Devise将存储的是密码的加密版本.我必须遵循Devise中的逻辑路径来确定,但我敢打赌你可以将它存储在User上的实例变量中,也许是params或者flash.对此要非常小心;你希望这个值尽可能短暂 – 大概就是请求的生命周期.