का उपयोग करके स्वागत ई-मेल भेजें, जब कोई उपयोगकर्ता मेरी सेवा में पंजीकरण करता है तो मैं एक स्वागत ई-मेल कैसे भेज सकता हूं?रेल 3: डेविस
इसके अलावा, मैं ई-मेल कैसे बदल सकता हूं: से और: डेविस से विषय फ़ील्ड?
धन्यवाद
का उपयोग करके स्वागत ई-मेल भेजें, जब कोई उपयोगकर्ता मेरी सेवा में पंजीकरण करता है तो मैं एक स्वागत ई-मेल कैसे भेज सकता हूं?रेल 3: डेविस
इसके अलावा, मैं ई-मेल कैसे बदल सकता हूं: से और: डेविस से विषय फ़ील्ड?
धन्यवाद
मैं अधिभावी द्वारा यह किया में विषयों को बदल सकते हैं देवता की पुष्टि! विधि: 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
अपने config में देखो/devise.rb
आप अपने स्थान फ़ाइलें (config/स्थानों/devise.en.yml)
यह एक महान चर्चा है। विधि को ओवरराइड करने के रूप में बेनोरॉर सुझाव महान काम करेंगे। यदि आपको लगता है कि आप अन्य उपयोगकर्ता घटनाओं को कैप्चर करना चाहते हैं, तो कुछ अन्य लोगों ने सुझाव दिया है कि ऑब्जर्वर क्लास सबसे साफ दृष्टिकोण हो सकता है। यह समाधान रेल 3.0.x और 3.1 के लिए है।
एक पर्यवेक्षक स्थापित करने के लिए, आप अपनी एप्लिकेशन फ़ाइल में निम्नलिखित परिवर्तन करते हैं, इस पर्यवेक्षक को आपके पास पहले से मौजूद किसी अन्य व्यक्ति को जोड़ना।
#app/models/user_observer.rb
class UserObserver < ActiveRecord::Observer
def after_create(user)
Notifier.user_new(user).deliver
end
end
आप एक ककड़ी परीक्षण है कि व्यायाम उपयोगकर्ता फ़ंक्शन बना सकते है, तो आप उस सुविधा के लिए इस चरण जोड़ने और इसे का बैकअप लेने के साथ कर सकते हैं:
#config/application.rb
config.active_record.observers = :user_observer
फिर मॉडल निर्देशिका में एक नई फ़ाइल बनाना परीक्षण मेल सरणी में एक ईमेल की जांच करने के लिए एक कार्यकर्ता कदम।
#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 == ["[email protected]"]
end
आप वातावरण/test.rb भेजने के बजाय एक मेल सरणी के निर्माण के लिए इन सेटिंग्स को होना चाहिए: में (, से आदि के लिए,)
config.action_mailer.delivery_method = :test
config.action_mailer.perform_deliveries = true
कहने के लिए आप और अधिक के लिए परीक्षण कर सकते हैं जरूरत नहीं संदेश, लेकिन यदि आप इतने इच्छुक हैं तो यह बीडीडी तरीके से शुरू हो जाएगा।
भी देखें कुछ पुराने StackOverflow अंतर्दृष्टि के साथ इस सवाल में धागे में शामिल हैं:
मैं उपयोग नहीं कर सकते "अनुमोदित" इस सवाल का जवाब क्योंकि मैं का उपयोग नहीं देवता: पुष्टि योग्य।
मुझे अन्य समाधान पसंद नहीं आया क्योंकि आपको मॉडल कॉलबैक का उपयोग करना होगा, जो आप कंसोल या एडमिन इंटरफ़ेस में अपना खाता बनाते समय हमेशा स्वागत ईमेल भेज देंगे। मेरे ऐप में सीएसवी फ़ाइल से उपयोगकर्ताओं को बड़े पैमाने पर आयात करने की क्षमता शामिल है। मैं नहीं चाहता कि मेरा ऐप उन सभी 3000ों को एक आश्चर्यजनक ईमेल भेज रहा हो, लेकिन मैं उन उपयोगकर्ताओं को चाहता हूं जो स्वागत ईमेल प्राप्त करने के लिए अपना खाता बनाते हैं। समाधान:
1) ओवरराइड वसीयत के पंजीकरण नियंत्रक:
#registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
def create
super
UserMailer.welcome(resource).deliver unless resource.invalid?
end
end
2) वसीयत आप अपने पंजीकरण नियंत्रक overrode बताएं:
# routes.rb
devise_for :users, controllers: { registrations: "registrations" }
बेशक
, आप अनुकूलित कर सकते हैं "UserMailer" और " devise_for: उपयोगकर्ता "आप जिस मॉडल नाम का उपयोग कर रहे हैं उससे मेल खाते हैं।
गैर-उपयोगकर्ताओं के लिए डेविस के साथ काम करने के लिए, आपको इसके बजाय 'संसाधन' का उपयोग करने की आवश्यकता है: 'पंजीकरण मेलर। स्वागत (संसाधन)। डेलिवर resource.persisted? ' – indirect
इस वाक्य में, मेल पंजीकरण भेजा जाता है भले ही उपयोगकर्ता पंजीकरण अपूर्ण है। –
कोई भी ठीक नहीं है। 'जब तक @ user.invalid?' यह सुनिश्चित करता है कि पंजीकरण तब तक नहीं भेजा जाता जब तक कि पंजीकरण पूरा नहीं हो जाता। – Arcolye
यदि आप उपयोग नहीं कर रहे हैं तो क्या होगा: पुष्टि योग्य? – Arcolye
यदि यह नहीं है: स्वीकार्य, मैं एक ही विधि का उपयोग करता हूं लेकिन इसे कॉल करता हूं: बाद में –