我有两个模特:球员和球队。
玩家有一个团队
团队上有5个字段(除了名称和位置),opponent_week_1,opponent_week_2等
我希望能够说出像Player.Team.opponent_week_1
这样的内容我应该如何将模型相互关联?玩家有团队吗?
如何设置球队的对手?我不希望球队有很多对手,因为只有那些5,我希望能够说对手_week_1,opponent_week_2等。
我正在使用Ruby 2和Rails 4.谢谢!
答案 0 :(得分:1)
jackerman09,
与Rails中的许多内容一样,有几种方法可以实现。 @phgrey指出如何修复球员和球队。
关于opponent_week_1,2等等:
我认为最好的方法是,如果你实际做与团队模型有has_may :opponent_week
关联,就像这样:
class Team < ActiveRecord::Base
...
has_many :fields
...
end
然后,您必须通过验证和/或通过表单将每个团队的对手周数限制为仅5。由于用户将通过表单进入那些对手周,这将是一个简单的方法来开始它。您可以控制表单,因此只需通过表单限制他们为每个团队投入的opponent_week数量。
如何调用它们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
一切顺利,如果您需要澄清,请告诉我。
答案 1 :(得分:0)
看看这里 - http://guides.rubyonrails.org/association_basics.html
<强> 1。玩家&lt; =&gt;队强>
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)关系