谢谢你看看!
我正在阅读Depot书籍和rails教程之后构建我的第一个“on my own”应用程序,并在两者之间进行工作。我发现很难让我的协会得以解决,因为在我目前的实践项目中有很多这样的协会。这是概述,它基本上是一个简单的NFL pickem应用程序:
“用户”登录(设计)并查看本周的“游戏”列表。 (比方说NFL比赛) “用户”可以通过提到的第一个屏幕为这些游戏制作“精选”,并在一周内提交 “游戏”有2个团队与之相关联 “游戏”有一个“结果”(在这里有一个结果模型或仅使用游戏表中的结果列)。 “周”中有几个“游戏”,它们被挑选出来。
在选秀结束后,他们可以看到所有人都选择了,但这在这里并不重要。
因此,正如您可以看到的那样,我需要指定几种关系,而且我很难将它们全部用完。另外我发现自己想要为每个人制作脚手架(我知道对吗?)但我不认为这是正确的答案。
此外,一旦得到解决,是否有良好的秩序与他们一起服用?就像在这种情况下我认为从“团队”开始是一个好主意,所以我可以在这几周中添加“周”和“游戏”。但我猜我真的迷失了,不知所措。有关如何开始解决此问题的任何提示?非常感谢大家的帮助!
(如果你想查看代码,请告诉我,但我认为这更像是一个过程/基本问题,而不是“给我解决我的具体问题”的问题。再次感谢。
答案 0 :(得分:1)
将所有不同的物体分开,然后问问自己各自的相关性通常很方便。你已经用上面所说的完成了所有这些,所以这只是将其转换为代码:
has_many
选择。belongs_to
游戏。belongs_to
两个不同的球队。has_many
场比赛。由于结果可以是关系或列,这意味着游戏has_one
结果。
然后你只需要反转其他模型的关联。一端has_one
表示另一端belongs_to
。一端belongs_to
表示另一端为has_many
或has_one
。
关键是要真正理解3个不同的关联 - belongs_to
,has_many
和has_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