はじめに
こんにちは!個人開発アプリの通知機能のまとめ記事です。
全3回構成となっており、今回は最終回として、アプリ内のコメント通知をLINEで行う方法について説明します。
個人開発のまとめ記事はこちらからご覧ください。
前回記事たちはこちらからご覧ください。
開発環境
・Ruby on Rails 7.1・Ruby 3.2.3
完成物
ユーザーの投稿に新規コメントが作成されると、LINEに通知が送られます。通知にはリダイレクトURLも含まれており、簡単にアプリに戻ることができます。
手順
1. post_id に line_user_id を紐付ける2. コメントモデルに通知設定をする
1. post_id に line_user_id を紐付ける
まずは post_id に line_user_id を紐付けます。Postモデルに以下のメソッドを追加します。
post.rb
class Post < ApplicationRecord
has_many :comments, dependent: :destroy
def line_user_id
user.line_user_id
end
end
これにより、line_user_id メソッドを通じて、アプリのユーザーIDとLINEアカウントIDを投稿に紐付けることができます。
このメソッドを、後ほどコメントモデルから呼び出します。
2. コメントモデルに通知設定
次に、コメントが作成された際にLINE通知を送る機能を実装します。comment.rb
class Comment < ApplicationRecord
validates :body, presence: true, length: { maximum: 255 }
belongs_to :user
belongs_to :post
after_create :send_line_notification
private
def send_line_notification
# postの所有者のline_user_idを取得
line_user_id = self.post.user.line_user_id
# line_user_idが存在する場合のみ、LINE通知を送信
if line_user_id.present? && line_user_id.is_a?(String)
post_url = "https://kousiennow.onrender.com/post/#{self.post.id}"
message = "#{self.post.user.user_name}さん、あなたの投稿に#{self.user.user_name}さんからコメントがあります。\n\"#{self.body}\" \n#{post_url}"
Notification.create_and_send_line_notification(line_user_id, message)
end
end
end
after_create により、コメントが作成されると自動的に send_line_notification メソッドが呼び出され、LINE通知が送信されます。
通知は、LINEアカウントと連携している場合のみ送信されるため、連携していない場合でもエラーは発生しません。
LINEメッセージを送る処理は、notification.rb にすでに記述済みです。
そのため、この部分では、誰にどのような内容のメッセージを送るかを定義するだけで済みます。
これで、投稿に新規コメントがついた際にLINE通知が送信されるようになりました!
最後に
最後までお読みいただきありがとうございます!これで公式LINE追加からコメント通知を送るまでの流れをまとめることができました。
備忘録ですが、参考になれば幸いです。
初学者ゆえ、誤解や説明不足があるかもしれませんが、ご指摘いただければ幸いです。