Мой взгляд на создание системы уведомлений в Rails

Я не могу найти убедительных статей, показывающих, как создавать уведомления в рельсах. Кажется, все говорят о Mailboxer, как о хорошем решении, но, если не считать одного абзаца о методе :Notify, он кажется очень расплывчатым.

Итак, я думаю о создании модели уведомлений, которая принадлежит Activity (Public Activity Gem), а затем использовать обратный вызов after_create в модели действий для вызова метода уведомления, который затем вызывает метод уведомления рассматриваемого объекта действий.

Как диаграмма

    class Comment
    include PublicActivity::Model
      tracked

    def notify
          #Loop through all involved users of this modal instance and create a Notify record pointing to the public activity
        end
    end

    class Activity < PublicActivity::Activity # (I presume I can override the gems Activity model in my App?)
    after_create :notify

      private
        def notify
          #Call the notify function from the model referenced in the activity, in this case, comment
        end
    end

Поэтому, когда вызывается модальный комментарий, публичная активность отслеживает его, а затем вызывает метод уведомления комментариев для сохранения в модели уведомления.

Модель уведомления будет просто состоять из

user_id, activity_id, read:boolean 

Примечание. Я изо всех сил стараюсь держать все подальше от контроллера, так как думаю, что все это будет лучше обрабатываться в модели. Но я открыт для предложений

Спасибо


person David Sigley    schedule 26.09.2014    source источник


Ответы (1)


Сначала вам нужно создать модель уведомлений с обязательными полями. И если вы хотите уведомлять администратора каждый раз, когда пользователь выполняет какое-либо действие (новая запись в модели действий), вы можете создать уведомление в методе after_create в модели действий.

class Activity
  after_create :notify

  def notify
    n = Notification.create(user_id: self.user_id, activity_id: self.id)
    n.save
  end
end

Приведенный выше код создаст запись в таблице уведомлений для создания нового действия с идентификатором действия и идентификатором пользователя.

Дополнительные пояснения здесь.

person Elmiya Agnes    schedule 11.10.2017