梅勒方法不被调用?

问题描述:

内部控制器:梅勒方法不被调用?

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控制台调用时会起作用。真正无法弄清楚的确切原因是什么。

你在这里看到的行为是对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