クラス テーブルの継承を使用して、サブクラスがスーパークラスを参照することをお勧めします。その逆ではありません。通常、Rails では、ポリモーフィックな関連付けは逆方向に機能します。つまり、スーパーはサブクラスを参照します。
おすすめされた
vehicle
.id
car
.vehicle_id # PK instead of using id (identity column)
boat
.vehicle_id
典型的な Rails ポリモーフィック アソシエーション
vehicle
.id
.subclass_type
.subclass_id
car
.id
boat
.id
推奨されるアプローチで私が気に入っているのは、一致しないキーをなくすことができることです。つまり、特定の車とそのビークル スーパーは同じ ID を共有します。
私の特定の例では、複数の継承をサポートする可能性があるため、たとえば、乗用車とボートのハイブリッド車を作成できます。
質問:
ActiveRecord の関連付けをどのように設定しますか...
車両がサブクラスを 1 つしか持てないとしたら?
車両が多くのサブクラスを持つことができるとしたら? (ここで私が目にする問題は、特定の subclass_type を指定しないことによって、どのテーブルにヒットするかをアソシエーションがどのように知るかということです。私はそれらがヒットするとは思わないので、可能なすべてのテーブルにヒットしなければならないでしょう。したがって、おそらく交差テーブルがここで役立ちます. )
これは ActiveRecord で使用するのに適した設計パターンですか?それとも、Rails のやり方に逆らって避けるべきでしょうか?