##やりたいこと
現在ECサイトの開発を行っており、購入時にお客様のメールアドレスに自動で購入確認メールを送る機能をRuby on RailsのActionMailerにて実装しております。
そこでメーラーでお客様にメールを送る内容に、購入された商品の情報を含めたいと考えております。
$ rails g mailer NotificationMailer
上記コマンドでmailerを作成し記述を行い、
notification_mailer.rbにて下記のように記載を行いました。
ruby
1def send_confirm_to_customer(customer) 2 @customer = customer 3 email_with_name = %("#{@customer.name} 様" <#{@customer.email}> ) 4 5 mail( 6 subject: "ご利用ありがとうございます", 7 to: email_with_name 8 ) do |format| 9 format.text 10 end 11 end
上記の中で@customerを定義しているのでもちろん、メールのフォーマットとなる、
send_confirm_to_customer.text.haml では
@customer.nameでお客様のお名前を呼び出すことができるかと思いますが、別モデルの商品の情報を呼び出す為に、上記1行目の
ruby
1def send_confirm_to_customer(customer) 2...
の部分で(customer)の引数を二つにすることはできるのでしょうか。
引数を二つにしてカートの中身の商品情報をメールに乗せて送りたいと考えております。
DBのテーブル構成は下記のようになります。
######purchaseテーブル (購入情報管理)
id | customer_id | cart_id |
---|
has_one :cart, dependent: :destroy
belongs_to :customer
customersテーブル (顧客情報管理)
id | name |
---|
has_many :purchases, dependent: :nullify
cartsテーブル (カートを管理)
idのみ
has_many :cart_items, dependent: :destroy
cart_itemsテーブル (カートの中身の商品を管理)
|id|product_id|cart_id||quantity(個数)|
|:--|:--:|--:|:--|
belongs_to :product
belongs_to :cart
##考えたこと
実際にはセッションを利用して現在のカートを管理する為、current_cartを定義しております。
ruby
1def send_confirm_to_customer(customer) 2...
このcustomerの引数を二つにして(purchase)などを使いそこから、購入情報となる商品の中身をeachメソットなどを使い表示させるなどできないか考えましたが、うまくいかず。。
どうかいい方法あればご教授いただきたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。