【发布时间】:2016-03-07 14:19:31
【问题描述】:
我正在编写一个包含 Players、Frames 和 Throws 的保龄球应用程序。球员有框架和投掷。一个 Frame 有多个 Throw。并且一个Throw可以关联多个Frame(例如,当一个frame投出一记好球时,需要使用后续的throw在这个frame中进行计分)。
我的模型如下所示:
class Player < ActiveRecord::Base
has_many :frames
has_many :throws
end
class Frame < ActiveRecord::Base
belongs_to :player
has_and_belongs_to_many :throws
end
class Throw < ActiveRecord::Base
belongs_to :player
has_and_belongs_to_many :frames
end
将三者都这样关联是不是糟糕的设计?我应该考虑不同的架构吗?
【问题讨论】:
-
我可能对语义感到困惑,但 throw 真的有很多帧吗?
-
一次投掷可以与许多帧相关联。例如,第一帧可能是罢工。然后第 2 帧的投掷也将与第 1 帧相关联,因为第 1 帧需要知道它才能计算第 1 帧的得分。基本上,帧需要知道未来帧的投掷。
-
出于个人/组织偏好,我可能会给它一个游戏的背景。那么一次投掷不需要很多帧……您可以通过访问上一帧来引用最后一次投掷。
-
我其实也有一个游戏。一个游戏有很多玩家。 Throw 仍然需要与多个 Frame 关联,以便 Frame 知道如何为自己评分。现在我想知道我是否可以让框架引用其他框架。然后它可以预测同一玩家的未来帧并计算自己的得分,而无需关联投掷。
标签: ruby-on-rails postgresql rails-activerecord