Ruby on rails Rails-如何覆盖designe';当前密码';面向omniauth用户

Ruby on rails Rails-如何覆盖designe';当前密码';面向omniauth用户,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我以前看过这篇文章,但还没有找到适合我的解决方案 我尝试过使用Desive Wiki,并尝试过其他人建议添加到控制器的代码: 问题是,通过我们的Twitter Omniauth注册的用户无法更新其帐户信息,因为Desive会提示他们输入“当前密码”进行更改。向用户发送随机生成的密码不是一个选项 我想做的是- 我想覆盖Desive controller的“更新”方法,以便它识别第一次编辑其详细信息的Twitter用户,并允许他们跳过“当前密码”验证。我们为twitter用户分配一个标准电子邮件地

我以前看过这篇文章,但还没有找到适合我的解决方案

我尝试过使用Desive Wiki,并尝试过其他人建议添加到控制器的代码:

问题是,通过我们的Twitter Omniauth注册的用户无法更新其帐户信息,因为Desive会提示他们输入“当前密码”进行更改。向用户发送随机生成的密码不是一个选项

我想做的是-

我想覆盖Desive controller的“更新”方法,以便它识别第一次编辑其详细信息的Twitter用户,并允许他们跳过“当前密码”验证。我们为twitter用户分配一个标准电子邮件地址,该地址可以是twitter检查的变量。如果不进行更改,他们将无法提交发件人

问题仍然存在-

我在注册控制器中尝试了不同的代码块,但我仍然被重定向回from,错误是当前密码不正确。我甚至没有进入binding.pry,所以看起来该方法甚至没有被读取

我已尝试完全删除“当前密码”的表单输入,并使用默认值将其传递到hidden

谢谢你的帮助

路线

Rails.application.routes.draw do

  ActiveAdmin.routes(self)
  # devise_for :users,
  devise_for :users, controllers: { registrations: 'registrations' },
  controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }


  scope '(:locale)', locale: /en|ca|es/ do

    resources :politicians

    resources :posts do
      resources :comments, only:[:new, :create, :edit, :update, :destroy]
      member do
        put "like", to: "posts#upvote"
        put "dislike", to: "posts#downvote"
      end
    end

    get "/about" => "pages#about_us"
    root to: 'pages#home'
  end
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
注册\u Controller.rb

class Users::RegistrationsController < Devise::RegistrationsController

  protected

   def update_resource(resource, params)
    binding.pry
      if current_user.email.include?("email.com")
        params.delete("current_password")
        resource.update_without_password(params)
      else
        resource.update_with_password(params)
      end
    end
end
类用户::注册控制器<设计::注册控制器
受保护的
def更新_资源(资源,参数)
捆绑,撬动
如果当前_user.email.include?(“email.com”)
参数删除(“当前密码”)
资源。在不使用密码的情况下更新\u(参数)
其他的
资源。使用\u密码更新\u(参数)
结束
结束
结束

您需要在注册的控制器中创建与此类似的方法:

def update_resource(resource, params)
    resource.update_without_password(params)
end

Deviate提供了一篇非常好、深入的wiki文章,允许用户在不输入密码的情况下更新其帐户信息。

您需要在注册的控制器中创建类似于此的方法:

def update_resource(resource, params)
    resource.update_without_password(params)
end

Deviate提供了一篇非常好、深入的wiki文章,允许用户在不输入密码的情况下更新其帐户信息。

Hi-ThisChuck的可能副本,谢谢您的回复。我已经遵循了这些步骤,但不幸的是,我被引导回表单,并显示了一条“我们需要您当前的密码来确认您的更改”错误消息。不确定我遗漏了什么请确保重新启动服务器并设置参数,使其不会查找密码确认字段。您好,Thischuck,谢谢您的回复。我已经遵循了这些步骤,但不幸的是,我被引导回表单,并显示了一条“我们需要您当前的密码来确认您的更改”错误消息。不确定我遗漏了什么确保重新启动服务器并设置参数,使其不会查找密码确认字段。