14、优化Rails应用中的用户通知与HTML视图抽象

Rails通知与视图抽象优化

优化Rails应用中的用户通知与HTML视图抽象

1. Noticed库与用户通知抽象

Noticed是一个流行的Rails库,它提供了通知对象的概念。通知对象代表系统中的单个通知,定义使用的交付渠道,并封装每个渠道的通知细节。使用 #deliver_later 方法时,可以将所有订阅者作为参数传递,无需迭代,这是Noticed提升开发者体验的一个特性。

Noticed支持常见的交付机制,还可通过自定义插件进行扩展。借助最少的额外对象和流行后端的内置交付适配器,能快速在Rails应用中搭建通知层。不过,随着应用的发展,使用通知类实例方法控制不同交付方法的行为,可能会使通知类变得难以理解,将每个通知放在单独的文件中也会导致 app/notifications 文件夹臃肿。

2. 用户通知偏好建模

在之前的示例中,我们依赖 User 模型来回答通知系统的核心问题之一:是否应通过渠道X通知用户。一种简单的实现方式是在 users 表中使用布尔列存储通知偏好,但这种方法存在一些缺点:
- 增加 User 模型的职责 :使 User 模型更接近“上帝对象”,不利于维护。
- 加宽数据库表 :虽然不太可能达到列数限制,但会增加心理和性能开销,因为Active Record通常会加载所有列,布尔值也需要反序列化。

3. 替代方案
3.1 位字段和值对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值