Es gibt mehrere Phasen, und da ich noch relativ neu in Schienen bin, bin ich mir nicht sicher, ob ich mich dem bestmöglich annähere.Benutzerdefiniertes Modell Methode, Einstellbereich für das automatische Senden von E-Mails
Benutzer folgen Firmen, Firmen Anwendungen öffnen und schließen an bestimmten Tagen. Wenn ein Benutzer einer Firma folgt, möchte ich, dass er automatisch eine E-Mail erhält, wenn a) die Firmenanmeldung öffnet, b) eine Woche vor dem Schließen der Firmenanträge, c) am Tag, an dem die Firmenanträge geschlossen werden.
Ich habe versucht, benannten Bereich zu verwenden. Ich habe die folgende Modellmethode (ich nehme an, das wird ein wenig Arbeit brauchen), die den Umfang jeder Firma abhängig vom Datum festlegt.
Modell 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
ich diese Methode möchte auf jeder Firma einmal täglich aufgerufen werden, so dass jedes Unternehmen den angemessenen Umfang hat - so habe ich versucht, mit dem, wenn gem (cron) und der folgende Code. Ausführen der obigen Modellmethode für jede Firma.
Schedule.rb
every 1.day do
runner "Firm.all.each do |firm|
firm.application_status
end"
end
Dann gilt für jede der Bereiche Öffnung, Warnung, Schließen Ich habe eine Methode in der Datei, wenn Zeitpläne, der Einfachheit halber werde ich nur die Öffnungsmethoden zeigen. Die folgenden Abfragen für alle Firmen, auf die der Eröffnungsbereich angewendet wurde, führen die Methode application_open_notification für sie aus.
Schedule.rb
every 1.day do
runner "Firm.opening.each do |firm|
firm.application_open_notification
end"
end
Dies erfordert die folgende Methode in dem Firm.rb Modell
def application_open_notification
self.users.each do |user|
FirmMailer.application_open(user, self).deliver
end
end
Was wiederum das letzte Stück des Puzzles ruft ..., die den Benutzer senden sollen eine E-Mail mit dem Namen der Firma.
def application_open(user,firm)
@firm = firm
@user = user
mail to: @user.email, subject: @firm' is now accepting applications'
end
end
Ist das ein praktikabler Weg, dieses Problem anzugehen? Insbesondere bin ich mit der Codierung im Modell nicht sehr vertraut.
Vielen Dank für jede Hilfe, die Sie anbieten können.
Ich denke, dass Ihre Idee, den Anwendungsbereich zu überspringen und Modellmethoden zu erstellen, viel sauberer ist, dann kann ich jeden einzelnen einmal am Tag anrufen. Danke, das ist wirklich eine große Hilfe! – RMcNairn