主要观点:
- 讨论了 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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。