使用Devise时分配随机密码

时间:2014-10-26 13:09:33

标签: devise passwords

这是情况的细分 -

所需行为:用户只需提供电子邮件地址即可通过Devise gem进行签名。 Web应用程序生成并且db存储临时密码,用户不知道。

逻辑:这意味着要逐步注册'处理仍处于构建中的Web应用程序(我们希望开始捕获潜在用户,而不提供对Web应用程序的访问,因为它仍处于部分开发阶段)。该电子邮件将用于通信目的,直到最终版本。

问题:设计宝石需要用户输入电子邮件&& sign_up过程中的密码。我们没有找到明显的方法来规避双重要求。用户无法提供密码会产生错误。

潜在解决方案:经过搜索和多次尝试后,这似乎是最接近的选择(在此处找到)。

generated_password = Devise.friendly_token.first(8)
user = User.create!(:email => email, :password => generated_password)

问题虽然潜在解决方案有意义,但我们真的对此不熟悉,并且不了解在哪个文件中放置此代码设计配置,以及如何调用它。

所有帮助表示赞赏。

LM

1 个答案:

答案 0 :(得分:-1)

好的,我一直在挖掘,直到找到我想要的东西(here) - 也许它也可以帮助你。

在你的模特中:

  before_validation :generate_password, :on => :create

 def generate_password
    o =  [('a'..'z'), ('A'..'Z'), (0..9)].map{|i| i.to_a}.flatten
    self.password = self.password_confirmation = (0..16).map{ o[rand(o.length)] }.join if     self.password.blank?
  end