在我的 rails 应用程序中,我有一个CASE
域实体,它充当特定于案例的域模型(即CASEA
, CASEB
, CASEC
)的逻辑超类,如下所示:
+--------+
| CASE |
+--------+
^
|
+-------------+-------------+
| | |
+-------+ +-------+ +-------+
| CASEA | | CASEB | | CASEC |
+-------+ +-------+ +-------+
这个想法是拥有一个具有所有案例共有的属性的域模型,以及每个特定案例类型的一个域模型,它封装了特定于该案例的属性。
我需要使用双向一对一关系实现多表继承设计,其中每个特定案例实例 ( CASEX
) 必须引用一个且仅一个案例实例 ( CASE
)。相反,每个CASE
实例应引用一个且仅一个特定于案例的实例 ( CASEX
)。请注意,每个特定案例都是不同的域模型类。此外,我希望CASE成为关系的所有者,以便将保存、更新和删除级联到另一端,如下所示:
case = Case.new
case.case_info = CaseX.new
case.save!
# both case and CaseX are validated and saved
使用活动记录实现这种关系的最佳方法是什么?