【问题标题】:How to skip the need to confirm an email address update with devise?如何跳过使用设计确认电子邮件地址更新的需要?
【发布时间】:2012-03-19 21:47:37
【问题描述】:

我正在使用 railsdevise confirmable

通常我想让用户确认他们的电子邮件地址,但有时我需要代表现有用户手动更改电子邮件并且我想跳过发送确认电子邮件。

创建一个新用户时,我可以跳过确认电子邮件:

user.skip_confirmation!

...但这似乎不适用于现有的已确认用户 - 只要电子邮件属性未更新,devise 仍需要用户确认新电子邮件并发送确认电子邮件:

@user = User.find_by_email('bob@site.com')
@user.email = 'dead@site.com'
@user.skip_confirmation!
@user.save!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise


    【解决方案1】:

    您要使用的方法是skip_reconfirmation!(注意重新确认中的're')。

    @user = User.find_by_email('bob@site.com')
    @user.email = 'dead@site.com'
    @user.skip_reconfirmation!
    @user.save!
    

    【讨论】:

    • 谢谢!正是我想要的。
    • 太棒了!这太疯狂了...skip_confirmation!应该也包括这个案例!感谢分享!
    【解决方案2】:

    尝试将 Devise.reconfirmableUser.reconfirmable(或任何您的模型)设置为 false。你可以在这一行设置config/initializers/devise.rb

    # If true, requires any email changes to be confirmed (exctly the same way as
    # initial account confirmation) to be applied. Requires additional unconfirmed_email
    # db field (see migrations). Until confirmed new email is stored in
    # unconfirmed email column, and copied to email column on successful confirmation.
    config.reconfirmable = true
    

    您还可以使用 Active Record 的 update_column 方法,该方法无需运行回调或验证即可保存字段。

    【讨论】:

    • 我想要reconfirmable,我想做的是在更新现有用户记录的电子邮件时能够跳过reconfirmable
    【解决方案3】:

    您可以在您的模型# models/users.rb 中使用这种代码。这将禁用更新时的电子邮件重新确认:

    def postpone_email_change?
      false 
    end
    

    或在您的控制器中

    def update
      user.email = params[:user][:email]
      user.skip_confirmation_notification!
    
      if user.save
        user.confirm
      end
    end
    

    【讨论】:

      【解决方案4】:

      如果您只想跳过电子邮件通知,请执行以下操作:

      @user.skip_confirmation_notification!
      @user.save
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2021-02-26
        • 1970-01-01
        • 2023-03-14
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多