我正在尝试使用Ruby on Rails创建一个在线足球(足球)管理游戏,因为它对我来说非常雄心勃勃,我发现一些部分相当具有挑战性。我编写了一个基本的匹配引擎,但是当谈到战术,阵容,编队等时,我发现组织各种数据并在ActiveRecord中创建关系更加困难。这同样适用于联赛和杯赛系统。
我将尝试在此提供简要概述:
任何想法如何最好地在模型中组织这个?
编辑:我主要遇到的问题是将球员与比赛联系起来(通过阵容?)。两支球队都需要选择11名球员参赛:1球进球,其余10名外场球员分布在防守/中场/进攻外场位置,例如: 4-4-2等等因此可以选择玩家11在中场,玩家9在攻击,玩家1在目标等等。可能的阵型包括3-5-2,3-4-3,4-4- 2,4-5-1,4-3-3等
以下是我尝试使用的架构示例:
create_table "teams", force: :cascade do |t|
t.integer "nation_id"
...
end
create_table "players", force: :cascade do |t|
t.integer "nation_id"
t.integer "team_id"
...
end
create_table "matches", force: :cascade do |t|
t.integer "home_team_id"
t.integer "away_team_id"
...
end
create_table "lineups", force: :cascade do |t|
t.integer "match_id"
t.integer "team_id"
...
end
create_table "formations", force: :cascade do |t|
t.string "name"
...
end
create_table "positions", force: :cascade do |t|
t.integer "formation_id"
t.string "name"
...
end
这样的事情会起作用吗?我不确定是否需要编队或职位表,或者这是否有效。
答案 0 :(得分:2)
这本身不是Rails问题 - 这是一个通用的建模问题。应该有大量关于面向对象建模的书籍,文章和教程。
这里没有详细说明:
app/models/*.rb
。has_many
,has_one
和belongs_to
关联。最后,寻找那些过于微不足道的模型来获得实际的Rails类。例如,“day”可能是或者可能不是类值得的(即,它可能只是您的匹配的日期属性;但是如果您想要将更多信息与日期本身相关联,或者您想要计划匹配这是在同一天发生的,在规划阶段还没有实际日期,然后继续)。这很大程度上取决于风格,观点和经验,这里没有严格的规则。
查看 建模介绍中的经典作品“设计模式”。