我有一个Flight
类代表飞行员日志中的一次飞行。它由以下属性组成:
- 期间
- 登陆
- 评论
它还有一个机场和出发和到达时间,这与我的问题有关。
我有关于将到达和离开建模为 a Movement
,它将由机场和时间组成。然后我会从 中派生一个Departure
和一个Arrival
类Movement
,并拥有Flight
两者的引用之一。
然后我遇到了关于 Ruby 的讨论TrueClass
和FalseClass
(为什么 Ruby 有 TrueClass 和 FalseClass 而不是单个布尔类?)。它的要点是 Ruby 不建模true
,false
因为Boolean
它们不共享任何行为,我相信到达和离开也是如此。即使它们确实共享数据,它们也完全相反。
另一种选择是我简单地将到达和离开的数据字段嵌入到Flight
. 我觉得这很尴尬,因为这意味着如果您从Airport
模型遍历到出发和到达 ( has_many :departures
, has_many :arrivals
) 将产生一个Flight
模型。
我探索的第三个选项是创建单独的Departure
和Arrival
模型而不从Movement
. 但是,由于 aFlight
需要同时具有到达和离开,这是引用航班所必需的,因此我们创建了一个讨厌的循环引用(顺便说一下,这也困扰了第一个选项)。
我将如何最好地模拟这种关系?有没有我没有考虑过的替代方案?