質問編集履歴

4 いらない文章があったため

s_diff

s_diff score 103

2018/06/15 14:30  投稿

Railsで自動送信メールにpdfファイルを添付したい
### 前提・実現したいこと
Railsでメール機能をつくっています。
CarrierWaveを利用してs3にpdfファイルをアップロードしてからUserMailerでそのpdfファイルをひっぱってきてメールに添付する、ということをしようとしているのですが、下記のような実装をしてもuploads配下にdecision_fileディレクトリが作成されず、またメールが送信されません
### 該当のソースコード
```ここに言語名を入力
#user_controller.rb
 def mail
   @user = User.find_by(id: params[:id])
   @d = DecisionFile.create(file: params[:file], text: params[:text], email: @user.email, user_name: @user.name)
   UserMailer.inform_sign_up_to_user(@d).deliver_later
   redirect_to edit_mail_manage_user_path, notice: '登録情報の通知メールをユーザーに送信しました。'
 end
#decision_file.rb
class DecisionFile < ActiveRecord::Base
 mount_uploader :file, MailAttachmentUploader
end
#mail_attachment_uploader.rb
class MailAttachmentUploader < CarrierWave::Uploader::Base
 include CarrierWave::MiniMagick
 def store_dir
   "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
 end
 def extension_white_list
   %W[pdf]
 end
 def filename
   name = "#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf"
   name.downcase
 end
end
#user_mailer
class UserMailer < ApplicationMailer
 default from: "info@mycompany.co.jp"#送信元のメールアドレス設定
 def inform_sign_up_to_user(d)
   @d = d
   attachments['mycompany-account.pdf'] = File.read("/decision_file/file/#{@d.id}/#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf")
   mail(
     subject: Settings.application_name + "お申込みいただきありがとうございます", #メールのタイトル,
     to: @d.email #宛先
   )
 end
end
#rails c
pry(main)> DecisionFile.last
 DecisionFile Load (0.2ms) SELECT `decision_files`.* FROM `decision_files` ORDER BY `decision_files`.`id` DESC LIMIT 1
#<DecisionFile:0x007fe5a75c9ab0> {
           :id => 45,
         :file => #<MailAttachmentUploader:0x007fe5ab063b08 @model=#<DecisionFile id: 45, file: "20180614093551.pdf", text: "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n ...", email: "test65@gmail.com", user_name: "test65", created_at: "2018-06-14 00:35:51", updated_at: "2018-06-14 00:35:51">, @mounted_as=:file, @storage=#<CarrierWave::Storage::File:0x007fe5ab063950 @uploader=#<MailAttachmentUploader:0x007fe5ab063b08 ...>>, @file=#<CarrierWave::SanitizedFile:0x007fe5ab062f50 @file="/Users/mycompany/Desktop/job/contents-store/public/uploads/decision_file/file/45/20180614093551.pdf", @original_filename=nil, @content_type=nil>, @versions={}>,
         :text => "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n この度は加盟していただきありがとうございます。\r\n\r\n お客様のユーザーIDとパスワードが登録されました。\r\n\r\n ユーザーIDとパスワードは添付したPDFファイル内に表記しております。\r\n 大切に保管していただけますようお願いいたしします。\r\n\r\n\r\n URL -\r\n https://〜.com",
        :email => "test65@gmail.com",
    :user_name => "test65",
   :created_at => Thu, 14 Jun 2018 09:35:51 JST +09:00,
   :updated_at => Thu, 14 Jun 2018 09:35:51 JST +09:00
```
### 試したこと
 
mail_attachment_uploader.rbで p store_dir を書いてログを確認すると  
"uploads"  
としか表示されず、変数の model が渡ってきていないようです。  
rails c で DecisionFile.last と打つと、
:file => の @model=内でファイル名が変換されていて、@file= で保存先も正しく表記されています。
ですが実際には public/uploads配下にdicision_fileディレクトリは作成されていません。
### 補足情報
メール送信でsidekiqをつかっています。
  • Ruby on Rails

    10730 questions

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

  • PDF

    371 questions

    PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

  • メール

    383 questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

3 内容に間違いがあったため

s_diff

s_diff score 103

2018/06/15 14:29  投稿

Railsで自動送信メールにpdfファイルを添付したい
### 前提・実現したいこと
CarrierWaveを利用してs3にpdfファイルをアップロードしてからUserMailerでそのpdfファイルをひっぱってきてメールに添付する、ということをしようとしているのですが、下記のような実装をしてもuploads配下にdecision_fileディレクトリが作成されず、またメールが送信されません
### 該当のソースコード
```ここに言語名を入力
#user_controller.rb
 def mail
   @user = User.find_by(id: params[:id])
   @d = DecisionFile.create(file: params[:file], text: params[:text], email: @user.email, user_name: @user.name)
   UserMailer.inform_sign_up_to_user(@d).deliver_later
   redirect_to edit_mail_manage_user_path, notice: '登録情報の通知メールをユーザーに送信しました。'
 end
#decision_file.rb
class DecisionFile < ActiveRecord::Base
 mount_uploader :file, MailAttachmentUploader
end
#mail_attachment_uploader.rb
class MailAttachmentUploader < CarrierWave::Uploader::Base
 include CarrierWave::MiniMagick
 def store_dir
   "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
 end
 def extension_white_list
   %W[pdf]
 end
 def filename
   name = "#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf"
   name.downcase
 end
end
#user_mailer
class UserMailer < ApplicationMailer
 default from: "info@mycompany.co.jp"#送信元のメールアドレス設定
 def inform_sign_up_to_user(d)
   @d = d
   attachments['mycompany-account.pdf'] = File.read("/decision_file/file/#{@d.id}/#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf")
   mail(
     subject: Settings.application_name + "お申込みいただきありがとうございます", #メールのタイトル,
     to: @d.email #宛先
   )
 end
end
#rails c
pry(main)> DecisionFile.last
 DecisionFile Load (0.2ms) SELECT `decision_files`.* FROM `decision_files` ORDER BY `decision_files`.`id` DESC LIMIT 1
#<DecisionFile:0x007fe5a75c9ab0> {
           :id => 45,
         :file => #<MailAttachmentUploader:0x007fe5ab063b08 @model=#<DecisionFile id: 45, file: "20180614093551.pdf", text: "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n ...", email: "test65@gmail.com", user_name: "test65", created_at: "2018-06-14 00:35:51", updated_at: "2018-06-14 00:35:51">, @mounted_as=:file, @storage=#<CarrierWave::Storage::File:0x007fe5ab063950 @uploader=#<MailAttachmentUploader:0x007fe5ab063b08 ...>>, @file=#<CarrierWave::SanitizedFile:0x007fe5ab062f50 @file="/Users/mycompany/Desktop/job/contents-store/public/uploads/decision_file/file/45/20180614093551.pdf", @original_filename=nil, @content_type=nil>, @versions={}>,
         :text => "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n この度は加盟していただきありがとうございます。\r\n\r\n お客様のユーザーIDとパスワードが登録されました。\r\n\r\n ユーザーIDとパスワードは添付したPDFファイル内に表記しております。\r\n 大切に保管していただけますようお願いいたしします。\r\n\r\n\r\n URL -\r\n https://〜.com",
        :email => "test65@gmail.com",
    :user_name => "test65",
   :created_at => Thu, 14 Jun 2018 09:35:51 JST +09:00,
   :updated_at => Thu, 14 Jun 2018 09:35:51 JST +09:00
```
### 試したこと
mail_attachment_uploader.rbで p store_dir を書いてログを確認すると
"uploads"
としか表示されず、変数の model が渡ってきていないようです。
rails c で DecisionFile.last と打つと、
:file => の @model=内でファイル名が変換されていて、@file= で保存先も正しく表記されています。
ですが実際には public/uploads配下にdicision_fileディレクトリは作成されていません。
### 補足情報
メール送信でsidekiqをつかっています。
  • Ruby on Rails

    10730 questions

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

  • PDF

    371 questions

    PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

  • メール

    383 questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

2 会社情報が記載されていたため

s_diff

s_diff score 103

2018/06/14 10:35  投稿

Railsで自動送信メールにpdfファイルを添付したい
### 前提・実現したいこと
Railsでユーザーの新規登録と同時に自動送信されるメール機能をつくっています。
CarrierWaveを利用してs3にpdfファイルをアップロードしてからUserMailerでそのpdfファイルをひっぱってきてメールに添付する、ということをしようとしているのですが、下記のような実装をしてもuploads配下にdecision_fileディレクトリが作成されず、またメールが送信されません
### 該当のソースコード
```ここに言語名を入力
#user_controller.rb
 def mail
   @user = User.find_by(id: params[:id])
   @d = DecisionFile.create(file: params[:file], text: params[:text], email: @user.email, user_name: @user.name)
   UserMailer.inform_sign_up_to_user(@d).deliver_later
   redirect_to edit_mail_manage_user_path, notice: '登録情報の通知メールをユーザーに送信しました。'
 end
#decision_file.rb
class DecisionFile < ActiveRecord::Base
 mount_uploader :file, MailAttachmentUploader
end
#mail_attachment_uploader.rb
class MailAttachmentUploader < CarrierWave::Uploader::Base
 include CarrierWave::MiniMagick
 def store_dir
   "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
 end
 def extension_white_list
   %W[pdf]
 end
 def filename
   name = "#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf"
   name.downcase
 end
end
#user_mailer
class UserMailer < ApplicationMailer
 default from: "info@livesearch.co.jp"#送信元のメールアドレス設定
 default from: "info@mycompany.co.jp"#送信元のメールアドレス設定
 def inform_sign_up_to_user(d)
   @d = d
   attachments['livesearch-account.pdf'] = File.read("/decision_file/file/#{@d.id}/#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf")
   attachments['mycompany-account.pdf'] = File.read("/decision_file/file/#{@d.id}/#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf")
   mail(
     subject: Settings.application_name + "お申込みいただきありがとうございます", #メールのタイトル,
     to: @d.email #宛先
   )
 end
end
#rails c
pry(main)> DecisionFile.last
 DecisionFile Load (0.2ms) SELECT `decision_files`.* FROM `decision_files` ORDER BY `decision_files`.`id` DESC LIMIT 1
#<DecisionFile:0x007fe5a75c9ab0> {
           :id => 45,
         :file => #<MailAttachmentUploader:0x007fe5ab063b08 @model=#<DecisionFile id: 45, file: "20180614093551.pdf", text: "【Live Search の導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n ...", email: "test65@gmail.com", user_name: "test65", created_at: "2018-06-14 00:35:51", updated_at: "2018-06-14 00:35:51">, @mounted_as=:file, @storage=#<CarrierWave::Storage::File:0x007fe5ab063950 @uploader=#<MailAttachmentUploader:0x007fe5ab063b08 ...>>, @file=#<CarrierWave::SanitizedFile:0x007fe5ab062f50 @file="/Users/mycompany/Desktop/job/contents-store/public/uploads/decision_file/file/45/20180614093551.pdf", @original_filename=nil, @content_type=nil>, @versions={}>,
         :text => "【Live Search の導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n この度は、不動産情報サイト Live Search(リブサーチ)へ加盟していただきありがとうございます。\r\n\r\n お客様のユーザーIDとパスワードが登録されました。\r\n\r\n ユーザーIDとパスワードは添付したPDFファイル内に表記しております。\r\n 大切に保管していただけますようお願いいたしします。\r\n\r\n\r\n - Live Search URL -\r\n https://photo-livesearch.com",
         :file => #<MailAttachmentUploader:0x007fe5ab063b08 @model=#<DecisionFile id: 45, file: "20180614093551.pdf", text: "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n ...", email: "test65@gmail.com", user_name: "test65", created_at: "2018-06-14 00:35:51", updated_at: "2018-06-14 00:35:51">, @mounted_as=:file, @storage=#<CarrierWave::Storage::File:0x007fe5ab063950 @uploader=#<MailAttachmentUploader:0x007fe5ab063b08 ...>>, @file=#<CarrierWave::SanitizedFile:0x007fe5ab062f50 @file="/Users/mycompany/Desktop/job/contents-store/public/uploads/decision_file/file/45/20180614093551.pdf", @original_filename=nil, @content_type=nil>, @versions={}>,
         :text => "【サービスの導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n この度は加盟していただきありがとうございます。\r\n\r\n お客様のユーザーIDとパスワードが登録されました。\r\n\r\n ユーザーIDとパスワードは添付したPDFファイル内に表記しております。\r\n 大切に保管していただけますようお願いいたしします。\r\n\r\n\r\n URL -\r\n https://〜.com",
        :email => "test65@gmail.com",
    :user_name => "test65",
   :created_at => Thu, 14 Jun 2018 09:35:51 JST +09:00,
   :updated_at => Thu, 14 Jun 2018 09:35:51 JST +09:00
```
### 試したこと
mail_attachment_uploader.rbで p store_dir を書いてログを確認すると
"uploads"
rails c で DecisionFile.last と打つと、
:file => の @model=内でファイル名が変換されていて、@file= で保存先も正しく表記されています。
ですが実際には public/uploads配下にdicision_fileディレクトリは作成されていません。
### 補足情報
メール送信でsidekiqをつかっています。
  • Ruby on Rails

    10730 questions

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

  • PDF

    371 questions

    PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

  • メール

    383 questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

1 会社情報が記載されていたため

s_diff

s_diff score 103

2018/06/14 10:30  投稿

Railsで自動送信メールにpdfファイルを添付したい
### 前提・実現したいこと
Railsでユーザーの新規登録と同時に自動送信されるメール機能をつくっています。
CarrierWaveを利用してs3にpdfファイルをアップロードしてからUserMailerでそのpdfファイルをひっぱってきてメールに添付する、ということをしようとしているのですが、下記のような実装をしてもuploads配下にdecision_fileディレクトリが作成されず、またメールが送信されません
### 該当のソースコード
```ここに言語名を入力
#user_controller.rb
 def mail
   @user = User.find_by(id: params[:id])
   @d = DecisionFile.create(file: params[:file], text: params[:text], email: @user.email, user_name: @user.name)
   UserMailer.inform_sign_up_to_user(@d).deliver_later
   redirect_to edit_mail_manage_user_path, notice: '登録情報の通知メールをユーザーに送信しました。'
 end
#decision_file.rb
class DecisionFile < ActiveRecord::Base
 mount_uploader :file, MailAttachmentUploader
end
#mail_attachment_uploader.rb
class MailAttachmentUploader < CarrierWave::Uploader::Base
 include CarrierWave::MiniMagick
 def store_dir
   "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
 end
 def extension_white_list
   %W[pdf]
 end
 def filename
   name = "#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf"
   name.downcase
 end
end
#user_mailer
class UserMailer < ApplicationMailer
 default from: "info@livesearch.co.jp"#送信元のメールアドレス設定
 def inform_sign_up_to_user(d)
   @d = d
   attachments['livesearch-account.pdf'] = File.read("/decision_file/file/#{@d.id}/#{Time.now.strftime('%Y%m%d%H%M%S')}.pdf")
   mail(
     subject: Settings.application_name + "お申込みいただきありがとうございます", #メールのタイトル,
     to: @d.email #宛先
   )
 end
end
#rails c
pry(main)> DecisionFile.last
 DecisionFile Load (0.2ms) SELECT `decision_files`.* FROM `decision_files` ORDER BY `decision_files`.`id` DESC LIMIT 1
#<DecisionFile:0x007fe5a75c9ab0> {
           :id => 45,
         :file => #<MailAttachmentUploader:0x007fe5ab063b08 @model=#<DecisionFile id: 45, file: "20180614093551.pdf", text: "【Live Search の導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n ...", email: "test65@gmail.com", user_name: "test65", created_at: "2018-06-14 00:35:51", updated_at: "2018-06-14 00:35:51">, @mounted_as=:file, @storage=#<CarrierWave::Storage::File:0x007fe5ab063950 @uploader=#<MailAttachmentUploader:0x007fe5ab063b08 ...>>, @file=#<CarrierWave::SanitizedFile:0x007fe5ab062f50 @file="/Users/livesearch/Desktop/job/contents-store/public/uploads/decision_file/file/45/20180614093551.pdf", @original_filename=nil, @content_type=nil>, @versions={}>,
         :file => #<MailAttachmentUploader:0x007fe5ab063b08 @model=#<DecisionFile id: 45, file: "20180614093551.pdf", text: "【Live Search の導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n ...", email: "test65@gmail.com", user_name: "test65", created_at: "2018-06-14 00:35:51", updated_at: "2018-06-14 00:35:51">, @mounted_as=:file, @storage=#<CarrierWave::Storage::File:0x007fe5ab063950 @uploader=#<MailAttachmentUploader:0x007fe5ab063b08 ...>>, @file=#<CarrierWave::SanitizedFile:0x007fe5ab062f50 @file="/Users/mycompany/Desktop/job/contents-store/public/uploads/decision_file/file/45/20180614093551.pdf", @original_filename=nil, @content_type=nil>, @versions={}>,
         :text => "【Live Search の導入ありがとうございます】\r\n\r\n こんにちは、test65様。\r\n この度は、不動産情報サイト Live Search(リブサーチ)へ加盟していただきありがとうございます。\r\n\r\n お客様のユーザーIDとパスワードが登録されました。\r\n\r\n ユーザーIDとパスワードは添付したPDFファイル内に表記しております。\r\n 大切に保管していただけますようお願いいたしします。\r\n\r\n\r\n - Live Search URL -\r\n https://photo-livesearch.com",
        :email => "test65@gmail.com",
    :user_name => "test65",
   :created_at => Thu, 14 Jun 2018 09:35:51 JST +09:00,
   :updated_at => Thu, 14 Jun 2018 09:35:51 JST +09:00
```
### 試したこと
mail_attachment_uploader.rbで p store_dir を書いてログを確認すると
"uploads"
としか表示されませんが、
rails c で DecisionFile.last と打つと、
:file => の @model=内でファイル名が変換されていて、@file= で保存先も正しく表記されています。
ですが実際には public/uploads配下にdicision_fileディレクトリは作成されていません。
### 補足情報
メール送信でsidekiqをつかっています。
  • Ruby on Rails

    10730 questions

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

  • PDF

    371 questions

    PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

  • メール

    383 questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る