ruby-on-rails - 设计忽略自定义创建方法
问题描述
用户必须通过 devise's 注册后发送给他们的链接来确认他们的电子邮件帐户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
。)
更新:
设计只忽略独特的create
方法。如果我将 abinding.pry
放入任何其他方法(new
或delete
)中,devise 会抓住它。
解决方案
如果未确认用户,则不会调用会话创建,因此这就是您无法访问该create
方法的原因。
尝试这个
class User < ActiveRecord
protected
def confirmation_required?
false
end
end
这将允许用户继续执行create
操作,sessions_controller
如果用户实际得到确认,您可以在那里进行测试。
推荐阅读
- r - 在没有安装 rgdal 的情况下在 R 中解压缩和读取形状文件
- postgresql - 无法将 postgresql db 连接到我的 netcore Web 项目(DigitalOcean Cloud)
- .net - F# 的 netcore 类库由纯 C# 编写的 netframework 和 netcore 项目共享?
- python-3.x - 在 For 循环中强制执行条件
- c# - 使用 SQL 发送电子邮件
- python - 你将如何优化这个简短但非常慢的 Python 循环?
- angular - Angular:如何在嵌套循环中创建动态下拉菜单
- python - 如何使用 scikit-learn 在 Python 中打印简单线性回归的截距和斜率?
- java - 仅当目标的字段为空时,MapStruct 将字段映射到目标
- java - 将确认传递给 Spring KafkaListener 消费者方法