使用Observer从rails app发送电子邮件

时间:2013-04-08 11:12:13

标签: ruby-on-rails ruby-on-rails-3.2 observers

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

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

2 个答案:

答案 0 :(得分:3)

已在轨道4中移除观察员。
这意味着,即使您仍然可以use them with a gem,它们也已被弃用,您不应该使用它们。

它的主要原因是观察者正在使你的应用程序变得一团糟,无法为新开发人员阅读。

我建议您使用服务(请查看this post,其中提及您如何正确地重构您的AR模型),并将电子邮件发送到其中一个。

答案 1 :(得分:0)

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

  

config.active_record.observers =:user_observer