4
任意のtext_fieldを追加して、招待メールにオプションのメッセージを追加したいと思います。したがって、何もメッセージに入れない場合、invitation_instructions.html.erbからの標準メッセージは、それ以外の場合はtext_fieldのメッセージを送信する必要があります。Invitableオプションのカスタムメッセージ
これを行う方法は?
任意のtext_fieldを追加して、招待メールにオプションのメッセージを追加したいと思います。したがって、何もメッセージに入れない場合、invitation_instructions.html.erbからの標準メッセージは、それ以外の場合はtext_fieldのメッセージを送信する必要があります。Invitableオプションのカスタムメッセージ
これを行う方法は?
これを達成するには、電子メールを作成するのではなく、独自のメーラーを使用することができます。ここ
はそれを行う方法である:
class User < ActiveRecord::Base
attr_reader :raw_invitation_token
end
class InvitationsController < Devise::InvitationsController
def create
@from = params[:from]
@subject = params[:invite_subject]
@content = params[:invite_content]
@user = User.invite!(params[:user], current_user) do |u|
u.skip_invitation = true
end
@user.deliver_invitation
email = NotificationMailer.invite_message(@user, @from, @subject, @content)
end
end
class NotificationMailer < ActionMailer::Base
def invite_message(user, venue, from, subject, content)
@user = user
@token = user.raw_invitation_token
invitation_link = accept_user_invitation_url(:invitation_token => @token)
mail(:from => from, :bcc => from, :to => @user.email, :subject => subject) do |format|
content = content.gsub '{{first_name}}', user.first_name
content = content.gsub '{{last_name}}', user.first_name
content = content.gsub '{{full_name}}', user.full_name
content = content.gsub('{{invitation_link}}', invitation_link)
format.text do
render :text => content
end
end
end
end
raw_invitation_token
のみdevise_invitableの新しいバージョン(工夫> = 3.1と互換性のある)に存在します。
私たちは本質的に、私たち独自のメーラーを使用して、すべての団体招待プロセスをスキップしています。私たちはその内容をパラメータとして電子メールの本文として送信します。プレースホルダを実際の値に置き換えることさえあります。
このソリューションを使用すると、電子メールで何でも自由に柔軟に対応できます。必要に応じてトラッキングピクセルを追加することもできます。
3日後に同じリンクのカスタム招待通知を送信したいと思います。以前のdevise 3.1バージョンではまったく問題ありませんでした。しかし、私が見ている限り、私は今、新しいトークンとそのリマインダーのための新しいリンク(私がしたくない)を生成するか、raw_invitation_tokenを後で使用するために保存しなければなりません(新しいトークンシステム)。どのようにこのジレンマを解決するための任意のアイデア? – wdspkr