0

在 Devise 2.2.3 和 Rails 3.2.x 中,我想创建一个例程,用户可以手动使他们可能发送到错误电子邮件地址的确认令牌/电子邮件无效。

我想我需要取消未确认的电子邮件和确认令牌。这是正确的吗?

我在 Google 或 Devise 文档上没有看到任何关于此过程的内容。

设想:

  1. 现有用户更改了他们的电子邮件。
  2. 用户意识到他们刚刚向前妻发送了一封电子邮件。: ) 管他呢。
  3. 用户不希望 ex 控制他们的帐户。
  4. 用户快速取消程序,从而保护他们的安全。

谢谢!

4

3 回答 3

5

由于我不想取消确认用户,我最终这样做了:

def cancel_change_email!
  self.confirmation_token = nil
  self.unconfirmed_email = nil
  self.save!
end

似乎工作。我把这个方法放到了一个模块中,我包含在用户模型中,但是如果你是这样滚动的,你可以把它直接放到用户模型中。我想这很容易,但我有点想它会内置到设计中。

于 2013-09-12T05:43:24.473 回答
2

我不认为 Devise 提供了一种方法,但你可以像这样自己做:

user = User.find(1)
user.confirmation_token = nil
user.confirmed_at = nil
user.save!
于 2013-09-10T04:18:13.460 回答
1

是的,您可以在某种回调中手动清除内容,然后重新发送确认说明。但是,您也可以使用 Devise 对 reconfirmable 的支持来实现这一点,当用户更改他们的电子邮件地址时可以使用它。如果设置了此项,则用户需要“重新确认”他们的帐户,您甚至可以延迟电子邮件更改,直到他们再次成功确认。

于 2013-09-10T04:26:37.827 回答