ユーザーが自分のサービスに登録したときに歓迎電子メールを送信するにはどうすればよいですか?Rails 3:Deviseを使用して歓迎電子メールを送信
また、電子メールを変更するにはどうすればいいですか:from:とSubject:フィールドはDeviseから変更できますか?あなたのconfig/devise.rb
に
おかげ
ユーザーが自分のサービスに登録したときに歓迎電子メールを送信するにはどうすればよいですか?Rails 3:Deviseを使用して歓迎電子メールを送信
また、電子メールを変更するにはどうすればいいですか:from:とSubject:フィールドはDeviseから変更できますか?あなたのconfig/devise.rb
に
おかげ
私はオーバーライドすることでそれをやりました念入りにする!方法: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
ルックあなたのロケールファイルの被験者を変更することができます(設定/ロケール/ devise.en.yml)
これは素晴らしい議論です。 benororが提案するメソッドをオーバーライドすると素晴らしい結果が得られます。他のユーザーイベントをキャプチャしたいと思う場合は、Observerクラスが他の場所で提案しているように、最もクリーンな方法かもしれません。このソリューションは、Rails 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 == ["[email protected]"]
end
あなたの環境送るのではなく、メールのアレイを構築するために、これらの設定を持つ必要があります/ test.rb:(など、からの、)
あなたがはるかにためにテストすることができ言うまでもなくconfig.action_mailer.delivery_method = :test
config.action_mailer.perform_deliveries = true
でメッセージが表示されますが、そういう場合はBDD方式で開始されます。
も参照してくださいこの質問への洞察力を持つ一部の古いStackOverflowのスレッドが含まれます:
を私は使用していないので、答えは「承認」を使用することはできませんDevise's:確認可能。
モデルコールバックを使用する必要があるため、コンソールや管理インターフェイスで自分のアカウントを作成してもウェルカム電子メールを送信する必要があるため、他のソリューションは嫌いでした。私のアプリには、CSVファイルからユーザーを一括インポートする機能があります。私は、自分のアプリが3000人すべてに驚きのメールを1つずつ送って欲しいとは思っていませんが、自分のアカウントを作成したユーザーに歓迎メールを送りたいと思っています。 ソリューション:
1)が考案者の登録コントローラーオーバーライド:
#registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
def create
super
UserMailer.welcome(resource).deliver unless resource.invalid?
end
end
2)あなたを考案知らせるその登録コントローラオーバーライド:もちろん
# routes.rb
devise_for :users, controllers: { registrations: "registrations" }
を、あなたは "UserMailer" を適応させることができ、 " devise_for:users "を使用しているモデル名と一致させる必要があります。
あなたが使用していない場合はどうすればいいですか:確認できますか? – Arcolye
それが妥当でない場合は、私は同じ方法を使用しますが、それを呼び出してみましょう:after_create –