我目前有以下模型结构和关系
class Fleet < ApplicationRecord
# properties id, created_at, updated_at
# A fleet should only consists of the same type, either a fleet or cars or a fleet of trains. Never both
has_many :cars
has_many :trains
end
class Car < ApplicationRecord
# properties id, created_at, updated_at, number_of_gears, is_sports_car
belongs_to :fleet
end
class Train < ApplicationRecord
# properties id, created_at, updated_at, number_of_wagons, people_capacity, has_first_calass_section
belongs_to :fleet
end
我遇到的问题是,车队应该只由同一类型的车队组成,要么是车队,要么是火车。两个都不要。
在当前的机队关系中,似乎两者都有很多联系(或者更像是飞机),在通话的完整性和易用性方面,我必须知道我能打什么电话。
sti不是一个选项,因为汽车和火车上的属性非常不同。还有更多的属性,为了简单起见,我在这个例子中缩短了它们。
在rails中,正确的方法是什么?
最佳答案
我会使用两种不同的模式:Carsfleet和Trainsfleet。两者都可以扩展机队模型,但定义不同的has_many
关联。
然后“车”将属于车队,“火车”将属于车队。