我有两个模型:球员和球队。
一名球员拥有一支球队
Team 上有 5 个字段(除了它的名称和位置),对手_周_1,对手_周_2 等。
我希望能够说类似 Player.Team.opponent_week_1
我应该如何将模型相互关联?玩家有一个团队?
如何设置球队的对手?我不希望球队有_many对手,因为只有那5个,而且我希望能够说对手_周_1,对手_周_2等。
我正在使用 Ruby 2 和 Rails 4。谢谢!
我有两个模型:球员和球队。
一名球员拥有一支球队
Team 上有 5 个字段(除了它的名称和位置),对手_周_1,对手_周_2 等。
我希望能够说类似 Player.Team.opponent_week_1
我应该如何将模型相互关联?玩家有一个团队?
如何设置球队的对手?我不希望球队有_many对手,因为只有那5个,而且我希望能够说对手_周_1,对手_周_2等。
我正在使用 Ruby 2 和 Rails 4。谢谢!
杰克曼09,
与 Rails 中的许多事情一样,有几种方法可以解决它。@phgrey 指出了如何修复球员和球队。
关于对手_周_1、2等:
我认为最好的方法是,如果您确实有来自has_may :opponent_week
Team 模型的关联,如下所示:
class Team < ActiveRecord::Base
...
has_many :fields
...
end
然后,您必须通过验证和/或通过表格将每个团队的对手周插入限制为仅 5 个。由于用户将通过表格输入这些对手数周,因此一开始这将是一种简单的方法。您可以控制表格,因此只需限制他们通过表格为每个团队投入的对手周数。
您将如何称呼他们opponent_week_1
等opponent_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
一切顺利,如果您需要澄清,请告诉我。
看看这里 - 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) 关系