需要帮助来定义使用rails的游戏模型

时间:2015-03-23 17:55:32

标签: ruby-on-rails ruby rails-models

我正在学习rails并尝试基于小游戏创建模型。设计时我很困惑。如果我有人可以帮助我,那将是非常有帮助的。

我试过看看这个

https://github.com/estiens/world_cup_json/tree/master/app/models

但是home_team_id和away_team_id让我感到困惑,因为我在我的场景中没有那个

我的情景: -

事件   - 活动名称   - 活动ID   - 活动冠军ID(团队)

队  - 队名   - 团队ID   - 团队成员国

匹配   - 第1队(我可以获得身份证或姓名)   - 第2队(我可以获得身份证或姓名)   - 第1轮比赛   - 第2轮比赛   - 比赛场地   - 比赛获胜者

即将到来的比赛   - 第1队   - 第2队   - 比赛时间

令我困惑的一件事是关系。一个事件可以有多个匹配,但一个匹配只能有两个团队。

我尝试了以下代码,但不确定是否正确

class Event < ActiveRecord::Base
   belongs_to :match
   belongs_to :team
end

class Match < ActiveRecord::Base
  has_many  :events
end

class Team < ActiveRecord::Base
  has_many  :events
end

如果我走在正确的道路上,请告诉我。)

编辑 - 1

class Event < ActiveRecord::Base
  has_many :matches
end

class Match < ActiveRecord::Base
  belongs_to :event
  has_many :teams
  belongs_to :team_one, :class_name => "Team"
  belongs_to :team_two, :class_name => "Team"
end

如果是这样,我可以迭代匹配并找到获胜者,这样我就可以在我的视图中填充。通过抓取网站进行分析。

2 个答案:

答案 0 :(得分:0)

看起来你并没有正确地建立你的关系。如您所定义,事件可以有多个匹配,因此请定义:

class Event < ActiveRecord::Base
   has_many :matches
end

因此:

class Match < ActiveRecord::Base
  belongs_to :event
  has_many :teams
end

即使一场比赛只能有两支球队,但仍有资格成为&#34;很多&#34; (它要么没有,有一个,要么有很多)。为了清楚起见,我将包括这个(也许它将有助于更好地说明关系):

class Team < ActiveRecord::Base
  has_many  :players
end

我还可以补充一点:

class Player < ActiveRecord::Base
  belongs_to  :team
end

我在了解活跃的记录关系时发现the rails guide on AR associations非常有价值。我建议你看看。

答案 1 :(得分:0)

我相信你必须有类似于away_team和home_team的东西。 你不能真正告诉我们某些模型“有两个”团队,你必须以某种方式告诉他们。所以你需要两个belongs_to关系,一个用于第一个团队,另一个用于第二个团队。

你可以用不同的名字命名,例如team_one和team_two如果“home”和“away”的概念在这种情况下没有意义。

如果一个玩家可以在你的游戏中挑战另一个可能是一个很好的开始点。启动游戏的玩家是主队,而另一个是远程队伍,无论如何你可能会在某个时候需要这些信息。

即使很难分辨,因为我对你的游戏一无所知。