【问题标题】:Devise ignoring customized create method设计忽略自定义创建方法
【发布时间】:2020-12-16 21:19:19
【问题描述】:

用户必须通过 devise 的confirmable 注册后发送给他们的链接来确认他们的电子邮件帐户。

现在,如果尚未确认其帐户的用户收到无用的错误:

Your email or password is incorrect.

我已尝试将以下内容添加到 SessionsController:

def create
  user = User.where(email: params[:user][:email]).take
  unless user.confirmed?
    super
  end
  flash[:alert] = "Your account has not been confirmed."
end

我的路线是

  devise_for :users, path: 'users', controllers: {
    sessions: "users/sessions"
  }

但是,以任何用户身份登录(确认与否)似乎绕过了整个方法。 (即使我输入了binding.pry。)

更新:

Devise 仅忽略唯一的 create 方法。如果我以任何其他方法(newdelete)输入 binding.pry,devise 会捕获它。

【问题讨论】:

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


    【解决方案1】:

    如果未确认用户,则不会调用会话创建,因此这就是您无法访问 create 方法的原因。

    试试这个

    class User < ActiveRecord
      
      protected
      
      def confirmation_required?
        false
      end
    end
    

    这将允许用户继续执行sessions_controller 中的create 操作,并且您可以在那里测试用户是否真的被确认。

    【讨论】:

    • 这就是我所拥有的!我会把它添加到原始帖子中。
    • 啊,对不起,误解了这个问题。我已经修改了答案。
    猜你喜欢
    • 2011-03-31
    • 2014-10-12
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多