繁体   English   中英

在设计中手动取消确认用户,rails

[英]Manually unconfirm a user in devise, rails

我正在尝试在我的应用中执行某些操作,如果用户未在90天内登录,他们的帐户将设置为未经确认,并且他们将通过电子邮件重新确认其电子邮件地址。

我知道我可以用这个重新发送电子邮件:

Devise::Mailer.confirmation_instructions(@user).deliver

我在架构中看到了这些相关的字段 -

 t.string   "unconfirmed_email"
 t.string   "confirmation_token"
 t.datetime "confirmed_at"
 t.datetime "confirmation_sent_at"

将它们全部设置为零,未经证实的电子邮件回到常规电子邮件是否有效?

confirmed_at属性更改为nil 当你运行.confirmed? 方法它将返回false

根据设计代码,清除confirmation_token并将unconfirmed_email设置为原始电子邮件应重新发送确认。 由于您有unconfirmed_email列,我假设您在设计配置中启用了可重新配置。

您可以从下面的可确认模型中查看相关代码

  after_update  :send_reconfirmation_instructions,  :if => :reconfirmation_required? 


  def send_reconfirmation_instructions
    @reconfirmation_required = false

    unless @skip_confirmation_notification
      send_confirmation_instructions
    end
  end

 # Send confirmation instructions by email
  def send_confirmation_instructions
    ensure_confirmation_token!

    opts = pending_reconfirmation? ? { :to => unconfirmed_email } : { }
    send_devise_notification(:confirmation_instructions, opts)
  end

 # Generate a confirmation token unless already exists and save the record.
  def ensure_confirmation_token!
    generate_confirmation_token! if should_generate_confirmation_token?
  end 

  def should_generate_confirmation_token?
      confirmation_token.nil? || confirmation_period_expired?
    end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM