gemを使った通知機能 - fjordllc/bootcamp GitHub Wiki
概要
(注意: 以前は独自の通知実装をしていました。古い実装方法については通知機能 · fjordllc/bootcamp Wikiを参照してください。)
FBCには通知が下記の3種類ある。
- サイト内通知(画面右上のベル)
- メール通知
- Discord通知
実装にはactive_deliveryとabstract_notifierが使われている。
実装
3種類のうち2種類の通知はabstract_notifierを使って実装されている。(メール通知はaction_mailer)
- サイト内通知: activity_notifier
- メール通知: activity_mailer
- Discord通知: discord_notifier
まとめて通知
active_deliveryを使っているので、activity_deliveryを使うことでactivity_notifierとactivity_mailerの二つを一気に呼び出すことができる。
ActivityDelivery.notify(:graduated, sender: xxx, receiver: xxx)
Discord通知の違い
サイト内通知・メール通知とDiscord通知には構造上の違いがある。
サイト内通知・メール通知: 送り元と送り先のユーザーがある。
Discord通知: 送り元ユーザーも送り先ユーザーもない。(送り先チャンネルはある)
注意点
上記の違いから、Discord通知はactive_deliveryで一気に送ることができない。個別にDiscordNotifierを使う必要がある。
例えばactive_deliveryでまとめてしまうと、同じ通知を10人に送る場合にDiscordに10件の通知が飛ぶことになってしまう。