パイロットの航海日誌のフライトをFlight表すクラスがあります。次の属性で構成されています。
- 間隔
- 着陸
- 備考
また、私の質問に関連する空港と出発時間と到着時間の両方があります。
私は到着と出発をMovement空港と時間で構成される としてモデル化することについて考えました。Departure次に、 からとArrivalクラスを派生させ、両方Movementの参照を取得します。Flight
TrueClassその後、Ruby のand FalseClass(なぜ Ruby には単一の Boolean クラスではなく TrueClass と FalseClass があるのですか? )に関する議論に出くわしました。その要点は、Ruby はモデルtrue化falseされていないということでした。Booleanなぜなら、それらは振る舞いを共有していないからです。到着と出発についても同じことが言えると思います。データを共有していますが、正反対です。
もう 1 つのオプションは、単に到着と出発のデータ フィールドを に埋め込むことFlightです。Airportモデルから出発点と到着点 ( has_many :departures, has_many :arrivals)にトラバースすると、モデルが生成されることになるため、これは厄介だと思いますFlight。
私が検討した 3 番目のオプションは、 から継承せずに個別Departureの とArrivalモデルを作成することMovementです。ただし、 a にFlightは、フライトを参照するために必要な到着と出発の両方が必要なため、厄介な循環参照を作成しました (ちなみに、これは最初のオプションも悩ませています)。
この関係をどのようにモデル化するのが最善でしょうか? 私が考慮しなかった代替案はありますか?