「app\mailers」フォルダに「purchase_mailer.rb」ファイルを新規作成してください。
app\mailers\purchase_mailer.rb(新規作成したファイル)
class PurchaseMailer < ApplicationMailer def send_email_to_buyer(buyer, project) @buyer = buyer @project = project mail(to: @buyer.email, subject: "プロジェクトのご購入ありがとうございます") end end
「app\views」フォルダに「purchase_mailer」フォルダを新規作成してください。
作成した「purchase_mailer」フォルダに「send_email_to_buyer.html.erb」ファイルを新規作成してください。
app\views\purchase_mailer\send_email_to_buyer.html.erb(新規作成したファイル)
<%= @buyer.full_name %> 様<br/> <br/> <br/> プロジェクト「<%= @project.name %>」のご購入、誠にありがとうございます。<br/> <br/> <br/> <%= @buyer.full_name %>様に幸運を☆<br/> <br/> ==========================================================<br/> Ruby on Rails Webサイト構築手順 | インストールからデプロイまで<br/> win.rails.learn@gmail.com<br/> ==========================================================<br/>
記述追加 app\controllers\charge_controller.rb
27行目に「PurchaseMailer.send_email_to_buyer(current_user, project).deliver_later」の記述追加
class ChargeController < ApplicationController before_action :authenticate_user! def free project = Project.find(params[:project_id]) if current_user.stripe_id.blank? flash[:alert] = "お支払い方法を更新してください。" return redirect_to settings_payment_path else charge end end private def charge project = Project.find(params[:project_id]) if !current_user.stripe_id.blank? customer = Stripe::Customer.retrieve(current_user.stripe_id) charge = Stripe::Charge.create( :customer => customer.id, :amount => project.price, :currency => 'JPY' ) if charge PurchaseMailer.send_email_to_buyer(current_user, project).deliver_later current_user.subscriptions.create(project: project) flash[:notice] = "プロジェクトを購入しました。" redirect_to project else flash[:notice] = "購入できませんでした。" end end rescue Stripe::CardError => e flash[:alert] = e.message redirect_to project end end
これでプロジェクト購入時に購入者へ電子メールが送信されるようになりました。