优化Rails应用中的用户通知与HTML视图抽象
1. Noticed库与用户通知抽象
Noticed是一个流行的Rails库,它提供了通知对象的概念。通知对象代表系统中的单个通知,定义使用的交付渠道,并封装每个渠道的通知细节。使用 #deliver_later 方法时,可以将所有订阅者作为参数传递,无需迭代,这是Noticed提升开发者体验的一个特性。
Noticed支持常见的交付机制,还可通过自定义插件进行扩展。借助最少的额外对象和流行后端的内置交付适配器,能快速在Rails应用中搭建通知层。不过,随着应用的发展,使用通知类实例方法控制不同交付方法的行为,可能会使通知类变得难以理解,将每个通知放在单独的文件中也会导致 app/notifications 文件夹臃肿。
2. 用户通知偏好建模
在之前的示例中,我们依赖 User 模型来回答通知系统的核心问题之一:是否应通过渠道X通知用户。一种简单的实现方式是在 users 表中使用布尔列存储通知偏好,但这种方法存在一些缺点:
- 增加 User 模型的职责 :使 User 模型更接近“上帝对象”,不利于维护。
- 加宽数据库表 :虽然不太可能达到列数限制,但会增加心理和性能开销,因为Active Record通常会加载所有列,布尔值也需要反序列化。
Rails通知与视图抽象优化
超级会员免费看
订阅专栏 解锁全文
27

被折叠的 条评论
为什么被折叠?



