Globaler before_sending_mail Callback in Rails - Ruby-on-Rails, E-Mail

Wenn ein Nutzer 10 Punkte in meiner Bewerbung erhält, erhält er eine E-Mail mit dem Hinweis "Du hast gerade 10 Punkte verdient!"

Wenn jemand über eine Woche 10 Punkte pro Tag verdient, macht es mir nichts aus, ihm täglich eine E-Mail zu schicken - aber wenn jemand an einem Tag 50 Punkte verdient, möchte ich ihm keine 5 E-Mails schicken.

Also würde ich gerne eine Möglichkeit haben, jede ausgehende E-Mail abzufangen, bevor sie gesendet wird, sie zu untersuchen und festzustellen, ob ich sie senden soll oder nicht. Was ist der beste Weg, dies zu tun?

Antworten:

1 für die Antwort № 1

Ich habe eine ähnliche Anwendung, wo ich eine habe sent_previous_email_at Zeitstempelfeld für den Kunden. Ich überprüfe nur:

send_email if send_previous_email_at < DateTime.today - 1.days

1 für die Antwort № 2

Ich würde eine Methode entweder an das Benutzermodell oder das Punktmodell anhängen (wenn Sie so etwas haben).

class User
def add_points(count)
# Add points
send_email if criteria_is_met
end

def send_email
# Send email
end
end

Nicht genau "global", aber anstatt den Mailer direkt aufzurufen, verwenden Sie einfach so etwas, damit Sie bedingtes Verhalten hinzufügen können.


Am beliebtesten