Techioz Blog

代わりに Notice Gem 経由でスレッド通知を送信するにはどうすればよいですか?

概要

私の Ruby on Rails アプリケーションは Noticed gem を使用して通知を配信します。

最近、Thredded gem を追加してフォーラム セクションを作成し、2 つの異なる通知アイコンができるようになりました。 1 つはメイン ナビゲーションに、もう 1 つはスレッド化されたフォーラム ページにあります。

現在、このような初期化ファイルがあります

Thredded.notifiers = []

通知を無効にしていないので、どこを変更すればよいのかわかりません。

スレッド化された初期化ファイルで通知 ( Noticed を使用) を作成しようとしましたが、アプリがクラッシュしました。

Thredded.notifiers = [Noticed::ThreddedNotification.with(user: user.id).deliver_later(user)]

通知はどこで変更できますか?

解決策

私自身の質問が解決しました(笑)! :)

Thredded には特定のメソッドがいくつかあるため、 Noticed 通知ファイルとカスタム通知コントローラーを生成しました。次に、初期化ファイルで、そのコントローラー クラスの新しいインスタンスを呼び出しました。

スレッド化された初期化ファイル

Thredded.notifiers = [CustomThreddedNotiferController.new]

通知ファイル

class ForumNotification < Noticed::Base
  
  deliver_by :database
  
  param :user

  def user
    User.find(params[:user])
  end
  
  def message
    t(".message")
  end

  def url
    root_path
  end
end

カスタムコントローラー

class CustomThreddedNotiferController < ApplicationController
  def initialize
  end

  def human_name
    'hello'
  end

  def key
    'email'
  end

  def new_post(post, users)
    user = User.find_by(id: users[0])
    ForumNotification.with(user: user.id).deliver_later(user)
  end

  def new_private_post(post, users)
    #
  end
end