在确认电子邮件中设计密码

gue*_*efi 0 email passwords devise ruby-on-rails-3

# in views/device/registration/new.html.erb:
<% password = Devise.friendly_token.first(8) %>

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name, :locale => I18n.locale)) do |f| %>

 <%= f.hidden_field :password, :value => password %>
 <%= f.hidden_field :password_confirmation, :value => password %>

 <%= f.email_field :email %>

<%= f.submit "sign up" %>
<% end %>


# in views/device/mailer/confirmation_instructions.html.erb:
<p>Your Password: <%# @ressource.password %></p>
Run Code Online (Sandbox Code Playgroud)

我正在为新用户生成密码.用户收到确认电子邮件,这应该是放置生成密码的正确位置.(确认后可以发给他密码)

但在电子邮件@ resource.password是零!

如何在设备确认电子邮件中发送给定密码?替代方案可能是在没有加密的情况下将pwd存储在db中,但我也没有成功.

Kul*_*ini 6

对于您提到的问题,这是一个有点hacky但可行的解决方案.

# in views/device/mailer/confirmation_instructions.html.erb:
<% pass = Devise.friendly_token.first(8) %>
<p>Your password is <%= pass %></p>
<% @resource.update_attributes( { :password => pass, :password_confirmation => pass }) %>
Run Code Online (Sandbox Code Playgroud)

这样您就可以为用户设置密码并立即通过电子邮件发送给用户.您可以保持代码views/device/registration/new.html.erb不变,因为user如果删除passwordpassword_confirmation字段,创建将失败.