2015-04-01 83 views
5

內部控制器:梅勒方法不被調用?

def update 
    @user.update({approved: true}) 
    UserMailer.send_approved_mail(@user) 
    redirect_to(root_url) 
end 

內部user_mailer.rb

class UserMailer < Devise::Mailer 
    def send_approved_mail(user) 
    @resource = user 
    email_body = render "user_activated_mail" 
    if @resource.valid? 
    client = Postmark::ApiClient.new(ENV["POSTMARK_API_KEY"]) 
    client.deliver(from: ENV["POSTMARK_SIGNATURE"], 
     to: @resource.email, subject: "User Activation information.", 
     tag: 'account-activated', :content_type => "text/html", 
     html_body: email_body) 
    end 
    end 
end 

在導軌4.1.0上述控制器方法被調用和被髮送的電子郵件,但在軌道4.2在控制器中的郵件收發器的方法沒有被調用,但從軌道控制檯調用它的作品。我已經爲郵戳api和配置文件做了所有必要的配置。唯一的事情是在rails 4.1.0中,控制器內部的mailer被調用,但是在rails 4.2中,它不起作用,但是在從rails控制檯調用時會起作用。真正無法弄清楚的確切原因是什麼。

回答

5

你在這裏看到的行爲是對Rails 4.2引入了新的默認:

通過引入主動工作和#deliver_later的...的實例方法調用(在郵件)將被推遲到調用deliver_now或deliver_later。

查看Rails 4.2 upgrade guide瞭解更多詳情。

雖然不要擔心。您仍然可以使用郵戳與ActionMailer。 official Postmark Rails gem提供了與ActionMailer郵戳集成的插件。通過使用它,您應該能夠編寫您的郵件程序,就好像它們是常規的Rails郵件程序一樣,而無需手動管理代碼中的Postmark連接。

P.S.我在Wildbit(Postmark的創造者)工作。隨時直接與我們聯繫。

+0

謝謝!如果遇到問題,肯定會聯繫。 – codemilan 2015-04-02 05:14:43