1

谢谢参观!

在阅读了 Depot 书和 Rails 教程并同时工作之后,我正在构建我的第一个“我自己”的应用程序。我发现很难让我的联想得到解决,因为在我目前的实践项目中有很多联想。这是概述,它基本上是一个简单的 NFL pickem 应用程序:

“用户”登录(设计)并看到本周的“游戏”列表。(比如说 NFL 比赛)。
“用户”可以为那些提到第一个屏幕的游戏做出“选择”,并在一周内提交它们。
一个“游戏”有 2 个与之关联的团队。
一个“游戏”有一个“结果”(因为有一个结果模型或者只是在这里使用游戏表中的结果列而被撕裂)。一个“周”中有几个被挑选的“游戏”。

选秀后,他们也可以看到其他人的选秀权,但这在这里并不重要。

因此,正如您在上面看到的,我需要指定几个关系,而且我很难将它们全部解决。此外,我发现自己想为每个人制作脚手架(我知道对吗?)但我认为这不是正确的答案。

另外,一旦制定出来,是否有一个很好的顺序可以随身携带?就像在这种情况下,我认为从“团队”开始是个好主意,这样我就可以在每个星期中添加“周”和“游戏”。但我想我真的很迷茫和不知所措。关于如何开始解决这个问题的任何提示?非常感谢大家的帮助!

(如果您想查看代码,请告诉我,但我认为这更像是一个过程/基本问题,而不是“给我一个解决我的具体问题”的问题。再次感谢。

4

1 回答 1

1

分解所有不同的对象然后问自己每个对象之间的关系通常很方便。您已经按照上面所说的完成了所有这些,因此只需将其转换为代码即可:

  • 用户可以选择意味着用户has_many选择。
  • Picks are for games 意味着一个选择belongs_to一个游戏。
  • 一场比赛有两支球队(比如说主场和客场),所以一场比赛belongs_to有两支不同的球队。
  • 一周有几场比赛所以一周has_many比赛。

由于结果可以是关系或列,这意味着游戏has_one结果。

然后,您只需为其他模型反转这些关联。has_one一端的A意味着belongs_to另一端的 A。一端的 Abelongs_to表示另一端的 ahas_many或 a has_one

关键是真正理解 3 个不同的关联 - belongs_tohas_manyhas_one- 以及它们如何翻译成英语。

结果会是这样的:

class User < ActiveRecord::Base
  has_many :picks
end

class Pick < ActiveRecord::Base
  belongs_to :user
  belongs_to :game
end

class Game < ActiveRecord::Base
  has_many :picks
  belongs_to :home_team, :class_name => "Team"
  belongs_to :away_team, :class_name => "Team"
  belongs_to :week
  has_one :result
end

class Week < ActiveRecord::Base
  has_many :games
end

class Team < ActiveRecord::Base
  has_many :home_games, :class_name => "Game"
  has_many :away_games, :class_name => "Game"
end

class Result < ActiveRecord::Base
  belongs_to :game
end

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

于 2012-11-05T23:55:45.110 回答