特定のユーザに送られるメールを全てキャンセル

ナチュラムでジョイナス2000が2000円切っていたのでぽちり。
昨日届きましたがやっぱりちょっと安い感じがありました。
もう千円だしてアリビオ買えばよかったかも。

釣り記事の合間のITネタ。


usersテーブルにlockフラグを持っているなどある条件によってメールを送信するしないをアプリ全体で制御する方法。
interceptorを使います。

1
2
3
# config/initializers/mail_interceptor.rb  

ActionMailer::Base.register_interceptor(MailInterceptor)

1
2
3
4
5
6
7
8
9
10
11
# lib/mail_interceptor.rb  

class MailInterceptor
  def self.delivering_email(email)
    # lock中のユーザーには送らない  
    user = User.find_by(email: email.to)
    if user.lock_flag?
      email.perform_deliveries = false
    end
  end
end

perform_deliveriesにfalseを設定するとメールが送られなくなります。

Comments