ruby on rails - ترجمة - القضبان 3: إرسال البريد الإلكتروني ترحيب باستخدام ديفيس




devise ترجمة (3)

ننظر إلى التكوين الخاص بك / devise.rb

يمكنك تغيير الموضوعات في ملفات اللغة (كونفيغ / لوكاليس / devise.en.yml)

كيف يمكنني إرسال بريد إلكتروني ترحيب عندما يسجل المستخدم إلى خدمتي؟

أيضا، كيف يمكنني تغيير رسائل البريد الإلكتروني: من و: موضوع الموضوع من ابتكار؟

شكر


فعلت ذلك من قبل تجاوز تأكيد ديفيس! الطريقة: https://gist.github.com/982181

class User < ActiveRecord::Base
  devise :invitable, :database_authenticatable, :registerable, :recoverable, 
         :rememberable, :confirmable, :validatable, :encryptable

  # ...

  # devise confirm! method overriden
  def confirm!
    welcome_message
    super
  end

  # ...

private

  def welcome_message
    UserMailer.welcome_message(self).deliver
  end

end

هذا هو مناقشة كبيرة. تجاوز الطريقة كما يقترح بينورور سوف تعمل كبيرة. إذا كنت تعتقد أنك قد ترغب في التقاط أحداث المستخدم الأخرى، ثم كما اقترح البعض الآخر في مكان آخر فئة المراقب قد يكون أنظف النهج. هذا الحل هو القضبان 3.0.x و 3.1.

لإعداد مراقب، يمكنك إجراء التغييرات التالية على ملف التطبيق الخاص بك، إضافة هذا المراقب إلى أي الآخرين قد يكون لديك بالفعل.

#config/application.rb
config.active_record.observers = :user_observer

ثم قم بإنشاء ملف جديد في دليل النماذج:

#app/models/user_observer.rb
class UserObserver < ActiveRecord::Observer 
  def after_create(user)
    Notifier.user_new(user).deliver
  end  
end

إذا كان لديك اختبار الخيار الذي يمارس وظائف المستخدم إنشاء، يمكنك إضافة هذه الخطوة إلى تلك الميزة ونسخه مع خطوة عامل للتحقق من وجود بريد إلكتروني في مجموعة البريد الاختبار.

#features/users/sign_up.feature for example
Scenario: User signs up with valid data
  ...
  And I should receive an email with "[Text from your welcome message]"


#features/common_steps.rb
Then /^I should receive an email with "([^"]*)"$/ do |value|
  # this will get the most recent email, so we can check the email headers and body.
  ActionMailer::Base.deliveries.should_not be_empty
  @email = ActionMailer::Base.deliveries.last
  @email.body.should include(value)
  #@email.from.should == ["no-[email protected].com"]
end

يجب أن يكون لديك بيئات / test.rb هذه الإعدادات لإنشاء مصفوفة بريد بدلا من إرسال:

config.action_mailer.delivery_method = :test
config.action_mailer.perform_deliveries = true

وغني عن القول يمكنك اختبار لأكثر من ذلك بكثير (من، وما إلى ذلك) في الرسالة، ولكن هذا سوف تحصل على بدأت بطريقة بد إذا كنت يميل ذلك.

انظر أيضا بعض المواضيع ستاكوفيرفلو القديمة مع نظرة ثاقبة على هذا السؤال ما يلي:





devise