主要观点:介绍了在 Ruby on Rails 应用中使用的“宽模型”模式,探讨了其与“胖模型”的区别,认为不应单纯以模型大小判断好坏,还提到了在验证方面的不同观点,如区分“输入验证”和“领域检查”,以及对使用dry-validation
和 ActiveRecord 验证的不同看法,重点强调可使用自定义验证上下文来选择性地应用验证。
关键信息:
- “宽模型”有很多在应用中多处更新的属性,不同形式会更新同一模型的不同属性子集。
- 胖模型像最初倒入蛋糕糊形成的大团块,应分解为小的封装对象。
- 可将验证分为“输入验证”(用户编辑表单时的验证)和“领域检查”(系统的基本不变量/约束)。
- Active Record 验证有自定义验证上下文功能,可基于特定场景进行验证,如多步表单验证。
重要细节: - 举例说明
Account
模型的验证设置,不同表单对应不同的验证规则。 - 提到自定义验证上下文可添加在
before_validation
和after_validation
回调上,但before_save
等其他回调仅支持非自定义回调。 - 结尾表示所有验证都可放在 Active Record 模型中。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。