2016-07-02 48 views
0

我已經設置了我的配置在Heroku上使用Mailtrap,並且可以確認我已經完成了它的大部分設置。意思是我收到電子郵件,但只要我不在用戶模型上調用方法。使用@user.name個性化電子郵件並自動將發送給@user.email的用戶導致無方法錯誤。我想也許這與我從用戶模型發送電子郵件而不是我自定義的設計用戶控制器有關,因此我添加了一個create方法。哪個沒做。錯誤說undefined method 'email' for nil:NilClass爲什麼我在ActionMailer中創建Devise :: RegistrationsController#創建NoMethodError?

在我的用戶模型我有

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 

然後在我的用戶控制器,它從設計:: 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

哦哇,多麼尷尬。它返回零,因爲我沒有告訴它使用最近創建的記錄。在我的郵件程序中更改@user = user@user = User.last解決了它。 T_T

相關問題