6

Recoverable モジュールで、ユーザーにパスワードのリセット リンクを含む「招待」メールを送信するようにします (アプリは招待のみです)。初期化子でメソッドを部分的に宣言します。

module Devise
  class Mailer
    def invite_new_user(record)
      devise_mail(record, :invitation_instructions)
    end
  end
end

module Devise
  module Models
    module Recoverable
      def send_invite_user_instructions!
        return unless status == User::STATUS_PENDING
        generate_reset_password_token!
        ::Devise.mailer.invite_new_user(self).deliver
      end
    end
  end
end

そして回復可能はうまく拡張されていますが、私のメーラーにはinvite_new_userメソッドがありません(レールコンソール出力):

1.9.2p290 :002 > user.send_invite_user_instructions! 
  User Load (1.4ms)  SELECT "users".* FROM "users" WHERE "users"."reset_password_token" = 'zMQK1CEXYupjNKpH8dph' LIMIT 1
   (0.3ms)  BEGIN
   (15.0ms)  UPDATE "users" SET "reset_password_token" = 'zMQK1CEXYupjNKpH8dph', "updated_at" = '2012-05-01 17:40:32.085256' WHERE "users"."id" = 59
   (4.5ms)  COMMIT
NoMethodError: undefined method `invite_new_user' for Devise::Mailer:Class

ただし、呼び出しには同じコンソール セッションのメソッドがあります。

1.9.2p290 :003 > ::Devise.mailer.method_defined? 'invite_new_user'
 => true 

私は何が欠けていますか?

4

1 に答える 1