パイロットの航海日誌のフライトを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
は、フライトを参照するために必要な到着と出発の両方が必要なため、厄介な循環参照を作成しました (ちなみに、これは最初のオプションも悩ませています)。
この関係をどのようにモデル化するのが最善でしょうか? 私が考慮しなかった代替案はありますか?