前提・実現したいこと
Rails5にてウェブサービスを作成しております。
cronを使って特定のユーザーに対しメール送信をしたいと考えているのですが上手く実装ができずご質問させてください。
狙いの実装としては
Userモデルと1:1の関係にあるIdealweightモデル内のlast_dayカラムがDate.currentと同日になったらそのユーザーにメール通知をしたいと考えております。
前提として既にcronは導入済み、メーラー等の作成も完了しております。
以下に現在書いているコードを記載させていただきます。
該当のソースコード
##mailer/notice_mailer.rb class NoticeMailer < ApplicationMailer default from: '********@gmail.com' def check_lastday(idealweight) Idealweight.where("last_day" == Date.current).each do |idealweight| @idealweight = idealweight NoticeMailer.check_lastday(idealweight).deliver_now mail(subject: "Toreka | Bodymake最終日となりました・・・" ,to: @idealweight.user.email) end end end
##views/notice_mailer/check_lastday.text.erb Today's Bodymake lastday!
##config/schedule.rb # Rails.rootを使用するために必要 require File.expand_path(File.dirname(__FILE__) + "/environment") # cronを実行する環境変数 rails_env = ENV['RAILS_ENV'] || :development # cronを実行する環境変数をセット set :environment, rails_env # cronのログの吐き出し場所 set :output, "#{Rails.root}/log/cron.log" every 1.minutes do #動きが見やすいように一旦は1分単位で監視 runner "NoticeMailer.check_lastday" end
以前cronを使用しバッチ処理を実装した際はモデルにも記載をしたのですが、
今回のようにメールにてユーザーに知らせたい場合も同様にモデルに記載はすべきなのでしょうか。
上記コードにおける不備や間違いがございましたらご教示いただけますと幸いです。
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.4
ruby 2.5.1
あなたの回答
tips
プレビュー