Rails 3 - Delayed_Job(collectiveidea),尝试延迟邮件程序 - 错误:NoMethodError(UserMailer的未定义方法`delay':Class)

AnA*_*ice 6 ruby-on-rails delayed-job ruby-on-rails-3

我在这里使用delayed_job gem:https://github.com/collectiveidea/delayed_job

我在观察员中有以下内容:

UserMailer.delay.msg_notification(record) 
Run Code Online (Sandbox Code Playgroud)

在user_mailer.rb中

class UserMailer < ActionMailer::Base 
... 
def msg_notification(record) 
    mail( 
          :to => "#{record.user.email}", 
          :subject => "Notification" 
          ) 
  end 
.. 
end 
Run Code Online (Sandbox Code Playgroud)

但是这个错误有:

 NoMethodError (undefined method `delay' for UserMailer:Class): 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

Xav*_*olt 4

我在我们的 Rails 应用程序上看到过这样的问题(2.3.8,但问题听起来是一样的)。基本上,延迟操作有以下三种方法:

  1. MyClass.delay.foo(arg)
  2. handle_asynchronously :foo类定义放在 foo 的定义之后
  3. MyClass.send_later(:foo, arg)

无论出于何种原因,#3 是唯一在我们所有开发机器上一致工作的形式。#1 在我们的开发服务器(Ubuntu)上死掉了;在我们设计师的 Mac 上排名第二。但#3 还好。

希望有帮助!