これにはいくつかの段階がありますが、私は比較的レールに慣れていないため、これに最善の方法でアプローチしているかどうかはわかりません。
ユーザーは会社をフォローし、会社のアプリケーションは特定の日に開閉します。ユーザーが会社をフォローしている場合、a)会社のアプリケーションが開いたとき、b)会社のアプリケーションが閉じる1週間前、c)会社のアプリケーションが閉じた日に、自動的にメールが届くようにします。
名前付きスコープを使用してみました。日付に応じて、各企業のスコープを設定する次のモデル方法(これには少し作業が必要になると思います)があります。
モデルfirms.rb
def application_status
if open_date == Today.date
self.opening = true
else
self.opening = false
end
if ((close_day - Today.date) == 7)
self.warning = true
else
self.warning = false
end
if close_day == Today.date
self.closing = true
else
self.closing = false
end
end
このメソッドを1日1回各企業で呼び出して、各企業が適切なスコープを持つようにしたいので、everyone gem(cron)と次のコードを使用してみました。上記のモデルメソッドを各企業で実行します。
Schedule.rb
every 1.day do
runner "Firm.all.each do |firm|
firm.application_status
end"
end
次に、スコープのオープン、警告、クローズのそれぞれについて、いつでもスケジュールファイルにメソッドがあります。簡単にするために、オープンメソッドだけを示します。次のクエリは、開始スコープが適用されているすべての企業に対してクエリを実行し、それらに対してapplication_open_notificationメソッドを実行します。
Schedule.rb
every 1.day do
runner "Firm.opening.each do |firm|
firm.application_open_notification
end"
end
これにより、Firm.rbモデルで次のメソッドが呼び出されます
def application_open_notification
self.users.each do |user|
FirmMailer.application_open(user, self).deliver
end
end
これにより、パズルの最後のピースが呼び出されます...これにより、会社の名前を含む電子メールがユーザーに送信されます。
def application_open(user,firm)
@firm = firm
@user = user
mail to: @user.email, subject: @firm' is now accepting applications'
end
end
これは、この問題に取り組むための実行可能な方法ですか?特に、私はモデルでのコーディングにあまり精通していません。
あなたが提供できるどんな助けにも感謝します。