2010-07-14 25 views
0

當用戶在我的應用程序中獲得10分時,他會收到一封電子郵件,內容爲「您剛獲得10分!」Rails中的全局before_sending_mail回調

如果某人一週內每天賺得10分,我不介意每天給他發一封電子郵件 - 但如果某人在一天內獲得50分,我不想給他發5封電子郵件。

因此,我想要一種方式來攔截每封發出的電子郵件,然後發送,檢查它,並確定是否應該發送它。什麼是最好的方法來做到這一點?

回答

1

我有一個類似的應用程序,我有一個客戶的sent_previous_email_at時間戳字段。我只是檢查:

send_email if send_previous_email_at < DateTime.today - 1.days 
1

我會附加某種方法的用戶模型或點模型(如果你有類似的東西)。

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

    def send_email 
    # Send email 
    end 
end 

不完全是「全球性」,但不是直接調用郵件,只需要使用這樣的事情,所以你可以輕鬆地添加條件行爲。