首次使用Active Record。我正在建立一个小型在线模拟游戏,我有自由球员,球员,球队,赛季和季后赛时间表。玩家应该从一个团队转移到另一个团队并且"竞争"互相攻击。当我尝试将所有这些类链接在一起时,我遇到的问题是回溯错误。这是我目前的结构:
架构:
create_table "games", force: :cascade do |t|
t.integer "visiting_team"
t.integer "home_team"
t.integer "visiting_score"
t.integer "home_score"
t.integer "winner"
end
create_table "league", force: :cascade do |t|
t.string "schedule"
t.string "teams"
t.string "players"
end
create_table "players", force: :cascade do |t|
t.string "name"
t.string "position"
t.integer "rating"
t.integer "age"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "team_id"
t.boolean "free_agent"
end
create_table "schedules", force: :cascade do |t|
t.integer "game"
end
create_table "teams", force: :cascade do |t|
t.string "name"
t.string "location"
t.integer "wins"
t.integer "losses"
t.integer "rating"
t.datetime "created_at"
t.datetime "updated_at"
end
以下是关系:
class Team < ActiveRecord::Base
has_many(:players)
has_many(:games)
belongs_to(:league)
end
class Schedule < ActiveRecord::Base
has_many(:games)
belongs_to(:league)
end
class Player < ActiveRecord::Base
belongs_to(:team)
has_many(:games)
belongs_to(:league)
end
class League < ActiveRecord::Base
has_one(:schedule)
has_many(:teams)
has_many(:players)
end
class Game < ActiveRecord::Base
belongs_to(:teams)
belongs_to(:players)
belongs_to(:schedules)
end
问题:我是否需要在联盟和球员/球队之间添加外键关系?文档说没有,但我不明白玩家如何在没有引用主键/外键的情况下属于联盟。另外,我不确定如何构建计划类。我不确定哪些属性有意义。我希望每个团队能够在许多游戏中竞争,并且能够为每个团队生成计划。我是一个新手,所以即使为活跃的记录指出了很好的资源(除了我读过的文档,虽然没有完全理解)也会非常有帮助。谢谢!