Я настроил свою конфигурацию, чтобы использовать Mailtrap на Heroku, и могу подтвердить, что у меня есть основная часть ее настройки. Значение Я получаю письма, но только до тех пор, пока я не вызываю методы в пользовательской модели. Персонализация электронной почты с помощью @user.name
и автоматизация отправки пользователем с помощью @user.email
приводит к ошибке метода. Я подумал, что, возможно, это связано с тем, что я отправляю электронные письма из пользовательской модели, а не из моего настраиваемого пользовательского контроллера, поэтому я добавил к этому метод создания. Который ничего не сделал. Ошибка говорит undefined method 'email' for nil:NilClass
Почему я могу получить NoMethodError в Devise :: RegistrationsController # create в ActionMailer?
В моей модели пользователя у меня есть
class User < ActiveRecord::Base
after_create :new_user
validates :email, presence: true, uniqueness: true, if: -> { self.email.present? }
private
def new_user
UserMailer.new_user(@user).deliver_now
end
end
В моей почтовой программе пользователя У меня есть
class UserMailer < ApplicationMailer
def new_user(user)
@user = user
mail(to: @user.email, subject: 'You will be notified when your account is activated.')
end
end
А потом в моем контроллере пользователей, который простирается от DEViSE :: RegistrationsController, У меня есть
class UsersController < Devise::RegistrationsController
def create
@user = User.new(sign_up_params)
end
private
def sign_up_params
params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation, :approved)
end
end
Есть идеи?