用途:为 Rails 8.1 应用编写正确、分层的 Active Record 校验,核心原则是模型校验与数据库约束成对出现,绝不单靠模型校验保证数据完整性。
主要能力:讲解内置校验器(presence、uniqueness、format、numericality、length、inclusion/exclusion、comparison、confirmation、acceptance、absence、validates_associated)的正确用法与配对约束(如 presence 配 null: false、uniqueness 配唯一索引);条件校验(if/unless、with_options、on 上下文);自定义校验(validate 方法、EachValidator、Validator 类);错误 API(errors.add、full_messages、added?、of_kind?)与视图展示;strict 严格校验;Rails 7.1+ 的 normalizes 规范化;以及会跳过校验的方法清单(update_all、insert_all、upsert 等)。
使用方式:按步骤选择校验归属(数据存在、唯一、格式、业务逻辑、引用完整性、跨记录一致性),再选用合适校验器并同步添加迁移中的数据库约束。示例:validates :email, presence: true, uniqueness: true 需配合 t.string :email, null: false 与 add_index :users, :email, unique: true。
适用场景:新增或重构模型校验、处理唯一性竞态、多步表单上下文校验、自定义校验器复用、错误信息国际化。
限制:资料针对 Rails 8.1;normalizes 需 Rails 7.1+;format 正则须用 \A 与 \z 而非 ^ 与 $;布尔字段勿用 presence;自定义 validate 方法需防 nil;validates_associated 不可双向使用;numericality 默认拒绝 nil,可选字段需 allow_nil: true。其余细节暂未提供。