宽模型和活动记录自定义验证上下文

主要观点:介绍了在 Ruby on Rails 应用中使用的“宽模型”模式,探讨了其与“胖模型”的区别,认为不应单纯以模型大小判断好坏,还提到了在验证方面的不同观点,如区分“输入验证”和“领域检查”,以及对使用dry-validation和 ActiveRecord 验证的不同看法,重点强调可使用自定义验证上下文来选择性地应用验证。
关键信息:

  • “宽模型”有很多在应用中多处更新的属性,不同形式会更新同一模型的不同属性子集。
  • 胖模型像最初倒入蛋糕糊形成的大团块,应分解为小的封装对象。
  • 可将验证分为“输入验证”(用户编辑表单时的验证)和“领域检查”(系统的基本不变量/约束)。
  • Active Record 验证有自定义验证上下文功能,可基于特定场景进行验证,如多步表单验证。
    重要细节:
  • 举例说明Account模型的验证设置,不同表单对应不同的验证规则。
  • 提到自定义验证上下文可添加在before_validationafter_validation回调上,但before_save等其他回调仅支持非自定义回调。
  • 结尾表示所有验证都可放在 Active Record 模型中。
阅读 8
0 条评论