0

我有两个模型:球员和球队。

  • 一名球员拥有一支球队

  • Team 上有 5 个字段(除了它的名称和位置),对手_周_1,对手_周_2 等。

我希望能够说类似 Player.Team.opponent_week_1

我应该如何将模型相互关联?玩家有一个团队?

如何设置球队的对手?我不希望球队有_many对手,因为只有那5个,而且我希望能够说对手_周_1,对手_周_2等。

我正在使用 Ruby 2 和 Rails 4。谢谢!

4

2 回答 2

1

杰克曼09,

与 Rails 中的许多事情一样,有几种方法可以解决它。@phgrey 指出了如何修复球员和球队。

关于对手_周_1、2等:

我认为最好的方法是,如果您确实来自has_may :opponent_weekTeam 模型的关联,如下所示:

class Team < ActiveRecord::Base
...
   has_many :fields
...
end

然后,您必须通过验证和/或通过表格将每个团队的对手周插入限制为仅 5 个。由于用户将通过表格输入这些对手数周,因此一开始这将是一种简单的方法。您可以控制表格,因此只需限制他们通过表格为每个团队投入的对手周数。

您将如何称呼他们opponent_week_1opponent_week_2:有几种方法。我会尝试在你的模型中放入method_missing一个方法(谷歌看看如何做)然后解析你调用的方法的名称。像这样的东西:

def method_missing( method_name )
  if method_name.starts_with?( "opponent_week_" )
    # get the number at the end, then call 
    opponent_weeks[ num_of_week - 1 ]
  else
    super
  end
end

一切顺利,如果您需要澄清,请告诉我。

于 2013-09-21T18:20:16.310 回答
0

看看这里 - http://guides.rubyonrails.org/association_basics.html

1. 球员 <=> 球队

class Player < ActiveRecord::Base
...
   belongs_to :team
...
end

class Team < ActiveRecord::Base
...
   has_many :players
...
end

确保迁移 create_players 有字段

t.references :team_id

2. Oppenents 你 是最糟糕的方式。最好看看命令之间的 HABTM (has_and_belongs_to_many) 关系

于 2013-09-21T11:24:37.880 回答