在 Devise 2.2.3 和 Rails 3.2.x 中,我想创建一个例程,用户可以手动使他们可能发送到错误电子邮件地址的确认令牌/电子邮件失效。
我想我需要取消未经确认的电子邮件和确认令牌。这是正确的吗?
我在 Google 或 Devise 文档中没有看到任何有关此过程的信息。
场景:
因为我不想取消用户的确认,所以我最终这样做了:
def cancel_change_email!
self.confirmation_token = nil
self.unconfirmed_email = nil
self.save!
end
似乎有效。我将此方法放入我要包含在用户模型中的模块中,但是如果您这样做的话,您可以将其直接放入用户模型中。我想这很简单,但我想它会内置到 Devise 中。
我认为 Devise 没有提供方法,但你可以自己这样做:
user = User.find(1)
user.confirmation_token = nil
user.confirmed_at = nil
user.save!
是的,您可以在某种回调中手动将内容清空,然后重新发送确认指令。但是,您也可以使用 Devise 对可重新确认的支持来实现此目的,该支持可以在用户更改其电子邮件地址时使用。如果设置了此设置,则要求用户“重新确认”他们的帐户,您甚至可以延迟电子邮件更改,直到他们再次成功确认。