用途:作为 Rails 工作的默认基线,指导编码、重构与代码审查,强调清晰显式代码、约定优先、领域建模与多租户安全边界。
主要能力:控制器保持精简、领域行为放入模型;优先 Rails 约定与内置能力而非新增 gem;用领域概念而非临时标志建模状态;通过归属边界限定租户/用户数据;硬性不变量用数据库约束,仅在需要面向用户报错时用 AR 校验;接口保持最小;偏好写入时计算(计数器缓存、delegated types、预计算汇总、无回调时用 dependent: :delete_all);现代 Rails 用 params.expect(...) 处理强参数;让程序崩溃(create! 等 bang 方法,在边界处理异常);修根因而非症状;行为变更与测试同 PR 提交。
建模与命名:状态用记录而非布尔值(如 Closure 记录替代 closed 布尔);大模型按能力拆为自包含 concern(约 50-150 行),领域切片用模型命名空间下的嵌套模块,app/models/concerns/ 仅用于真正跨模型行为;PORO 放 app/models/ 而非 app/services/;默认值用 lambda;请求上下文用 Current 属性;回调仅用于设置/清理。命名上重视语义:正向命名、按角色命名关联(creator 而非 user)、领域驱动作用域、统一领域语言。
REST 与授权:一切皆 CRUD,动词转名词(Close → resource :closure);单数资源表示每父级唯一状态;用 scope module: 分组嵌套控制器;同一控制器通过 respond_to 服务 HTML/Turbo/JSON,不另设 API 命名空间;不用 Pundit/CanCanCan,模型上定义谓词方法,控制器检查并返回 head :forbidden。
依赖与审查:新增 gem 前先问原生 Rails 能否实现、50-150 行内联是否更简单;常见可跳过 Devise、Pundit、ViewComponent、RSpec、FactoryBot、Redis、service objects、GraphQL、SPA、Tailwind 等。审查优先级为正确性与数据安全、多租户/安全边界、可维护性与可读性、性能热点、风格。需标记的问题包括未限定范围的记录查找、无充分理由的新依赖、应在 SQL 完成的内存过滤排序、替代简单模型方法的 service object、非 RESTful 自定义动作、布尔状态列、带表单页面使用 HTTP 缓存、字符串状态检查、无唯一索引的 uniqueness 校验、依赖隐式实例变量的 helper、未转义的 html_safe 插值、为 2-3 个场景使用元编程、仅含私有方法的 concern。
限制:资料未提供安装命令、平台支持、收费与价格信息,暂未提供。