4

我找不到任何关于如何在 Rails 中创建通知的结论性文章。每个人似乎都在谈论 Mailboxer 就像它是一个很好的解决方案,但除了他们在 :Notify 方法上的那一段之外,它似乎很模糊。

所以我正在考虑创建一个属于 Activity(公共 Activity Gem)的通知模型,然后在活动模型上使用 after_create 回调来调用 notify 方法,然后调用相关活动对象的 notify 方法。

如图

    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 

注意:我正在尽最大努力将所有东西都放在控制器之外,因为我认为在模型中可以更好地处理整个事情。但我愿意接受建议

谢谢

4

1 回答 1

0

首先,您需要创建一个包含必填字段的通知模型。如果您想在每次用户完成任何活动时通知管理员(活动模型中的新条目),您可以在活动模型的 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

上面的代码将在通知表中创建一个用于创建新活动的条目,其中包含活动 ID 和用户 ID。

更多解释在这里

于 2017-10-11T07:28:06.813 回答