質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2095閲覧

【Rails】ActionMailer送信内容をDB保存するには?

zackieeee

総合スコア16

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/08/19 02:20

編集2019/08/20 01:13

調査不足なだけかもしれませんが、うまく検索に引っかからず・・・
ご教示いただければ幸甚です。

環境:MacOS Rails 5.2.2(Ruby 2.5.1)

【実現したいこと】
イベントをトリガーとして下記2つを実現したい
①ActionMaielrを利用してイベント毎に違った内容をメール通知する
②①で送信したメールの内容を専用テーブル(Notificationモデルと名付けました)に格納する
※②をアプリ内から参照可能にする

【困っていること】
②でメール送信データを取得し、その内容でNotificationモデルをcreate。
アプリケーションからも通知内容を参照できるようにしたいのですが、実現しているような記事が見つかりません。。
DB保存時に改めて内容を記述すれば行けそうですが、それでは管理が大変な気もしました。

【教えて欲しい内容】
①メール内容を任意のDBに保存するには、どうすれば良いでしょうか?
参考になりそうな記事などをご存知であれば、ご教示いただきたいです。

 ②メールやDBの内容(テンプレート)について、どのように管理されているでしょうか?
MailerのViewにそれぞれ書き出している感じでしょうか?
別でテーブルなり、Ja.yamalなどに書いている感じでしょうか?

そもそもの考え方が間違っているなどあれば、そこも含めて指摘をいただければと考えます。
駄文ではございますが、何卒よろしくお願いいたします。

【追記】
Mailerの本文はViewにhtml.hamlを作成し、haml形式で記述をしています。
以下に例を記述いたします。

rails

1 Mailer.rb 2 #ユーザ登録完了通知 3 def registration_confirmation(user) 4 @user = user 5 mail to: @user.email, 6 subject: '【●●●●】会員登録完了' 7 end

rails

1 registration_confirmation.html.haml 2 3%p 4 = "#{@user.nickname}さん" 5 %br 6 %br 7 ●●●にご登録いただきありがとうございます。 8 %br 9 会員登録が完了しました。

rails

1mail = UserMailer.registration_confirmation(user).deliver 2 3@notice = Notice.new(mail.subject,mail.body.encoded・・・) 4・・・ 5

最初mail.body.encodedでデータをとると64baseでエンコードされた状態でしたが、
先ほど確認したところhtml形式で中身を確認することができました。

上記の上で、そもそも考え方が違う、一般的な事例などご教示いただけると幸いです。
何卒、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2019/08/19 22:24

Mailer の本文を定義するのに色々な流儀があります。 それによって、どう本文を得るか、という方法が違うかと。どの様に記述しているか開示して下さい。
zackieeee

2019/08/20 02:23

コメントありがとうございます。 追記いたしました!もし、意図と違うなどあれば、さらに指摘をいただければと思います。。。
guest

回答1

0

ベストアンサー

haml か、、、
hamlは使っていないので 下の様な手があるかどうか。
erbでしたら
ERB.new(erbのpath).result(binding)
で変換結果が得られのですが。

ここだけ erb にしていただくか
haml で同じような手を探しだしていただくか

でしょうか

投稿2019/08/20 03:16

winterboum

総合スコア23331

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問