私の Rails アプリでは、次CASE
のように、ケース固有のドメイン モデル (つまりCASEA
、CASEB
、CASEC
)の論理スーパー クラスとして機能するドメイン エンティティがあります。
+--------+
| CASE |
+--------+
^
|
+-------------+-------------+
| | |
+-------+ +-------+ +-------+
| CASEA | | CASEB | | CASEC |
+-------+ +-------+ +-------+
アイデアは、すべてのケースに共通のプロパティを持つ 1 つのドメイン モデルと、そのケースに固有のプロパティをカプセル化する特定のケース タイプごとに 1 つのドメイン モデルを持つことです。
各特定のケース インスタンス ( ) が 1 つのケース インスタンス ( ) のみを参照する必要がある双方向の 1 対 1 の関係を使用して、複数テーブルの継承設計を実装する必要があります。逆に、各インスタンスは、ケース固有のインスタンスを 1 つだけ参照する必要があります ( )。それぞれの特定のケースは異なるドメイン モデル クラスであることに注意してください。さらに、保存、更新、削除を次のように相手側にカスケードするために、CASEを関係の所有者にしたいと考えています。CASEX
CASE
CASE
CASEX
case = Case.new
case.case_info = CaseX.new
case.save!
# both case and CaseX are validated and saved
アクティブ レコードを使用してこの関係を実装するには、どのような方法が最適でしょうか?