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

时间:2010-12-11 20:10:29

标签: ruby-on-rails ruby-on-rails-3 delayed-job

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

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

UserMailer.delay.msg_notification(record) 

在user_mailer.rb

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

但是这个错误与:

 NoMethodError (undefined method `delay' for UserMailer:Class): 

有什么想法吗?感谢

2 个答案:

答案 0 :(得分:4)

我在我们的Rails应用程序(2.3.8,但问题听起来相同)上看到了这样的问题。基本上,有三种方法可以延迟行动:

  1. MyClass.delay.foo(arg)
  2. 在foo
  3. 定义后将handle_asynchronously :foo放入类定义中
  4. MyClass.send_later(:foo, arg)
  5. 无论出于何种原因,#3是我们所有开发机器中唯一一致的形式。 #1在我们的开发服务器(Ubuntu)上死亡;我们设计师的Mac上排名第二。但#3很好。

    希望有所帮助!

答案 1 :(得分:2)

同时检查捆绑安装后是否重新启动了服务器。这也可能是个问题......