为Rails应用建立模型关联

时间:2018-07-25 06:34:12

标签: ruby-on-rails ruby-on-rails-5 associations model-associations

我在如何与Rails网站建立关联方面遇到了一些麻烦,这是我的第一个Rails项目,请耐心等待。如果您听不懂,请告诉我。

我的网站将是每周一次的'pickem nfl'网站,用户可以在其中输入多个池,而管理员将能够创建池,以便普通用户可以进入和玩耍。

如果您不知道什么,那么请阅读本节。 NFL每周Pickem基本上是一种游戏,您在其中选择自己认为每周会赢的nfl球队。第一周,假设有16场比赛,您每场比赛选择一支球队。您猜对的每场比赛都会获得1分,在本周末,猜测最多的用户将赢得本周的胜利。这种情况持续了整个季节,并且通常在该季节结束时,猜测最多的前10位用户会获得奖励...

现在我清除了这个问题,让我明白了

目前我的班级和协会是:

用户-常规信息,名称,电子邮件等。

getFormulation: function(FORMULATIONDATE) {
  debugger;
  FORMULATIONDATE = FORMULATIONDATE.slice(0, 10);
  return (FORMULATIONDATE === "TimeUnavailable") ? null : FORMULATIONDATE;
}

游泳池-仅带有游泳池名称

Model: User
has_many :groups
has_many :pools, through: :groups

组-连接池和用户的模型

Model: Pool
has_many :groups
has_many :users, through: :groups

比赛-主队,客队,积分等。

团队-我存储团队名称并考虑存储其徽标

如您所见,我已经在用户和池之间建立了关联,因此一个用户可以在多个池中,而一个池可以有多个用户。

我的问题是:

我如何做到这一点,以便一个池可以有许多与其他池不同的比赛?这样一来,以后我就可以为nba创建池,为nfl,mlb等创建池。

如何做到这一点,以便一个用户可以选择一个认为会获胜的团队?请记住,该用户可以在多个池中,因此一个选择仅适用于特定池。

我当时想做这样的事情,尽管它不起作用:(

Model: Group
belongs_to :user
belongs_to :pool

1 个答案:

答案 0 :(得分:0)

我认为您应该为这种关系画一个图,因为它很复杂,所以使它变得容易得多。

如果您的“用户”和“资源库”通过“组”关联,则您的“选择”模型可以使用该模型:

Model:Pick
belongs_to :match
belongs_to :group
belongs_to :round
date:datetime

您可以执行Pick.group.user来获取用户,或执行Pick.group.pool来获取池

按照我的建议,我还添加了一个模型回合,可以跟踪每周的回合。