用途:当领域概念已较清晰、下一步需要决定如何在 Rails 中建模时使用。核心原则是按真实领域压力建模,而非照搬教科书式 DDD 词汇。
主要能力:提供概念到 Rails 的默认映射——实体用 ActiveRecord 模型(持久化身份重要时);值对象用贴近其领域的普通 Ruby 对象;聚合根作为守护不变量的主要入口;领域服务用 PORO 承载不属于单一实体的业务行为;应用服务放在 app/services 编排用例;仓储仅在存在真实边界时使用;领域事件仅在多个下游消费者需要时才显式建立。
使用方式:先列出领域概念(实体、值、策略、工作流、事件),识别不变量,选择聚合入口,放置行为,选择最简单的 Rails 归属位置,再用测试验证。建议的归属:聚合/实体放 app/models/...,应用或领域服务放 app/services/...,值对象放 app/models/... 或仓库惯用的 PORO 位置,策略对象放 app/services/...、app/policies/... 或项目约定,领域事件放 app/events/... 或仓库已有命名空间。输出应包含领域概念、推荐建模选择、建议 Rails 归属、不变量或所有权理由、应避免的模式、下一步链式技能。
适用场景:Rails 功能有清晰领域语言但建模选择不明;用户询问某物应为模型、值对象、服务、仓储还是事件;限界上下文清晰且需要战术设计。可链式调用 ddd-ubiquitous-language、ddd-boundaries-review、generate-tasks、rails-tdd-slices、rails-principles-and-boundaries。
限制:硬性门槛要求不得仅为显得“DDD”而引入仓储、聚合或领域事件,不得在普通模型或服务已能清晰表达领域时对抗 Rails 默认约定。常见错误包括把每个概念都变成服务、为所有读写创建仓储、把聚合仅当文件夹名、为单个本地回调添加领域事件、完全忘记 Rails 约定。具体安装命令与价格信息暂未提供。