我已将我的配置设置为在Heroku上使用Mailtrap,并且可以确认我已经设置了大部分内容。这意味着我收到了电子邮件,但只要我不在用户模型上调用方法。使用@user.name
个性化电子邮件并自动将其发送给@user.email
的用户导致无方法错误。我想也许这与我从用户模型发送电子邮件而不是我的自定义设计用户控制器这一事实有关,所以我添加了一个创建方法。哪个什么也没做。错误显示undefined method 'email' for nil:NilClass
在我的用户模型中,我有
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
有什么想法吗?
答案 0 :(得分:0)
@user = user
更改为@user = User.last
解决了这个问题。 T_T