Проблема с Devise для добавления подтверждения по электронной почте

Я хочу добавить подтверждение по электронной почте в свое приложение rails с помощью Devise. Я получил это сообщение об ошибке:

NoMethodError в Devise::RegistrationsController#создать неопределенный метод `confirmation_instructions' для MailForm::Base:Class

введите здесь описание изображения

schema.rb

create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", 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 = '[email protected]'

  #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',
    port: 587,
    domain: 'gmail.com',
    authentication: 'plain',
    enable_starttls_auto: true,
    user_name: ENV['GMAIL_EMAIL'],
    password: ENV['GMAIL_PASSWORD']
  }

Это потому, что гем mail_form для контактной формы? Должен ли я создать RegistrationController? Может ли кто-нибудь угадать основную проблему здесь?


person Nova Togatorop    schedule 06.09.2020    source источник


Ответы (1)


confirmation_instructions — это метод, определенный в программе рассылки Devise< /а>

Попробуйте изменить конфигурацию почтовой программы в devise.rb.

Devise.setup do |config|
  config.mailer_sender = '[email protected]'
  config.mailer = 'Devise::Mailer'
end
person user11350468    schedule 06.09.2020