主要观点:
- 讨论了 Rails 的
delegated_type,指出其名称不佳及强制结构的问题。 - 阐述了
delegated_type的多表继承灵感及通过委托实现的方式,通过代码示例展示了Entry与Message、Comment的关系。 - 指出
delegated_type结构在域建模方面存在的问题,如内类型离不开外类型、-able命名不佳、涉及单独目录的关注点等。 - 提出了改进方案,如使用
Entry::Message和Entry::Comment明确域建模、去掉不必要的ActiveSupport::Concern样板代码、自动修剪生成的方法名的命名空间等。 - 考虑对
delegated_type进行重命名以更清晰地表达其含义,还提供了重命名后的实现代码。 - 提到了在命名空间支持方面的 bonus,即定义
render_in方法以自动渲染相关部分视图。
关键信息和重要细节:
delegated_type本质上是多表继承通过委托实现,外类型Entry包含内类型Message和Comment。- 存在的问题包括内类型需通过外类型访问、命名后缀
-able不好、涉及单独目录的关注点等。 - 改进方案包括更改命名方式、去掉
ActiveSupport::Concern、自动修剪命名空间等。 - 重命名
delegated_type为composed_with_delegate并给出了实现代码。 render_in方法可自动根据委托类型渲染相关部分视图。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。