Devise添加电子邮件确认的问题

如何解决Devise添加电子邮件确认的问题

我想使用Devise在我的Rails应用程序中添加电子邮件确认。我收到此错误消息:

“ Devise :: RegistrationsController#create中的NoMethodError MailForm :: Base:Class的未定义方法`confirmation_instructions'

enter image description here

schema.rb

create_table "users",force: :cascade do |t|
    t.string "email",default: "",null: false
    t.string "encrypted_password",null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at",null: false
    t.datetime "updated_at",null: false
    t.string "username"
    t.string "first_name"
    t.string "last_name"
    t.float "latitude"
    t.float "longitude"
    t.boolean "admin",default: false
    t.string "confirmation_token"
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
    t.string "unconfirmed_email"
    t.index ["email"],name: "index_users_on_email",unique: true
    t.index ["reset_password_token"],name: "index_users_on_reset_password_token",unique: true
  end

user.rb

class User < ApplicationRecord

  devise :database_authenticatable,:registerable,:recoverable,:rememberable,:validatable,:confirmable
end

routes.rb

Rails.application.routes.draw do
  devise_for :users

  resources :users do
    member do
      get :confirm_email
    end
  end

devise.rb

Devise.setup do |config|
config.mailer_sender = 'my_email@gmail.com'

  #mail_form
  config.mailer = 'MailForm::Base'
end

development.rb

  config.action_mailer.default_url_options = { host: "https://myapp.com" }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',port: 587,domain: 'gmail.com',authentication: 'plain',enable_starttls_auto: true,user_name: ENV['GMAIL_EMAIL'],password: ENV['GMAIL_PASSWORD']
  }

production.rb

config.action_mailer_default_url_options = { host: 'https://myapp.com' }
  Rails.application.routes.default_url_options[:host] = 'https://myapp.com'
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = false
  config.action_mailer.default charset: 'utf-8'
  config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',password: ENV['GMAIL_PASSWORD']
  }

这是因为mail_form gem用于联系表格吗?我应该创建RegistrationController吗?有人能猜出这里的主要问题吗?

解决方法

confirmation_instructions是在Devise mailer

上定义的方法

尝试在 devise.rb

中更改邮件程序配置
Devise.setup do |config|
  config.mailer_sender = 'my_email@gmail.com'
  config.mailer = 'Devise::Mailer'
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?