0

これがUserControllerでの私のアクションdo_registrationです

  def do_registration

    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        UserMailer.welcome_email(@user).deliver
        format.html { render action: "do_registration" }
      else
        format.html { render action: "registration" }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end

代わりにUserObserverを使用して、アクションでActionMailerを呼び出したいので、observers/user_observer.rbに次のコード行を記述しました。

class UserObserver < ActiveRecord::Observer
  observe User

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

追加した

config.active_record.observers = :user_observer

私のenvironment.rbにありますが、新しいユーザーを登録するとメールは送信されません。

何が問題ですか?

4

1 に答える 1

1

observe Userモデル名のみを使用して作成したため、この行をオブザーバーに記述する必要はありません。デフォルトでは User クラスを観察します。しかし、明示的に言及したい場合は、このようにする必要がありますobserve :user

于 2012-07-18T09:35:07.230 に答える