Итак, насколько я понимаю из вашего вопроса, вы хотите, чтобы пользователи следили за этим постом, когда пользователь нажимает на ссылку «подписаться».Для этого вам нужно будет сохранить эту информацию в базе данных, связав ее между пользователем и постом в качестве подписчика.Затем всякий раз, когда в этом посте происходит какое-либо действие, отправляйте в поток уведомлений всех подписчиков этого конкретного поста уведомление.
Создайте канал уведомлений, на который будет подписываться каждый пользователь всякий раз, когда он входит на сайт,так, например, пользователь с идентификатором 1, войдя в систему, он будет подписан на поток уведомлений, который будет уникальным для каждого пользователя, например, notify_user_1_channel
class NotificationsChannel < ApplicationCable::Channel
def subscribed
if params[:recepient].present?
stream_from "notify_#{params[:recepient]}_channel"
end
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
end
В вашем сценарии для канала
App.chat = App.cable.subscriptions.create {
channel: "NotificationsChannel"
recepient: $('#recepient').data("recepient")
}
И для предоставления получателя в качестве параметра, где-то в коде представления, предпочтительно в нижнем колонтитуле,
<div id="recepient" data-recepient="User_<%= current_user.id %>"></div>
И, для передачи уведомления потоку, в after_create_commit модели уведомлений,
ActionCable.server.broadcast "notify_#{notification.recepient_type}_#{notification.recepient_id}_channel"