2

我正在尝试从我的应用程序发送电子邮件。当我不使用观察者时,会发送电子邮件。当我使用观察者时,我收到以下错误:

undefined local variable or method ` UserMailer' for #<UserObserver:0x7f5730c07400>

这是我的 UserMailer

class UserMailer < ActionMailer::Base
  default :from => "from@me.com"    
  def welcome_email(user)
    @user = user
    @url  = "website.com/home"
    mail(:to => user.email, :subject => "Welcome to My Awesome Site")
  end
end

观察者代码

require "#{Rails.root}/app/mailers/user_mailer.rb" 

class UserObserver < ActiveRecord::Observer
    observe :user

  def after_save(user)
     UserMailer.welcome_email(user).deliver
  end

end

任何帮助将不胜感激。我是铁轨上的红宝石。TIA

4

2 回答 2

3

Rails 4 中删除了观察者。
这意味着,即使您仍然可以将它们与 gem 一起使用,但它们已被弃用,您不应使用它们。

其主要原因是观察者使您的应用程序对于新开发人员来说是一团糟。

我建议您使用服务(看看这篇文章,其中提到了如何正确重构您的 AR 模型),并在其中一个中发送您的电子邮件。

于 2013-04-08T11:53:22.250 回答
0

您的 application.rb 文件中是否有以下行设置?

config.active_record.observers = :user_observer

于 2013-04-08T11:43:36.783 回答