【发布时间】:2018-11-05 20:13:04
【问题描述】:
我正在为学校做一个 Rails 项目,其中一个要求是我在我的模型中使用多对多关系。我所看到的所有示例都非常简单且有意义,但我无法将其纳入我的具体工作中。
我正在做的项目是一个体育博彩网站,基本上你会选择战斗机 A 或战斗机 B 获胜,赔率会显示在页面上,列出潜在的支付金额等。
到目前为止,我已经创建了一个 Fighter、Fight 和 Event 模型,要让它们相互配合非常困难.这是我所拥有的:
class Event < ApplicationRecord
has_many :fights
end
class Fight < ApplicationRecord
belongs_to :red_corner, :class_name => "Fighter", :foreign_key => 'red_id'
belongs_to :blue_corner, :class_name => "Fighter", :foreign_key = 'blue_id'
belongs_to :event
end
class Fighter < ApplicationRecord
has_one :red_corner, :class_name => "Fighter", :foreign_key => 'red_id'
has_one :blue_corner, :class_name => "Fighter", :foreign_key => 'blue_id'
end
如果有人对此感到困惑,只是为了扩展这一点,一个活动每晚会举行很多场战斗,比如说大约 10 场。一场战斗由 2 名战士组成(红色角落的对手和蓝色角落的对手,不确定如果我在那里正确处理了 FK,但我相信它到目前为止有效)。
我需要的是:
- 这里我可以合并多对多的情况。以某种方式将我的事件模型包含在其中会很好,这样我就可以返回特定事件中的战斗列表。 (而不是将多个值加载到我的事件表的一列中)。
- 我还想使用 Fights 表来检索 Fighters 的名称,而不是将它们实际保存到 Fight 模型中(Fighters 名称在 Fighter 模型中)。例如:“Fight.find(2).Fighters.names”——无论如何都是这样的。
如果需要,也可以发布我的架构。
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-5 associations model-associations