我一直在使用rails已近一年了,而且我一直处于不确定何时使用多对多关联的情况。这是我目前的情况。
我有播放器,赛季和运动。
player.rb
has_many :seasons, :dependent => :destroy
season.rb
belongs_to :player
has_many :sports, :dependent => :destroy
sport.rb
belongs_to :season
玩家 has_many:季节和季节属于玩家。然后我有运动属于季节和季节has_many:体育。
我希望玩家能够添加一个新赛季(例如2011-2012,2012-2013,2014-2015等),然后在赛季结束后,我希望玩家能够添加他们的运动目前正在打那个赛季。我现在非常困惑,因为我现在这样做的方式迫使我使用3级深度的嵌套资源
的routes.rb
resources players do
resources :seasons do
resources :sports
end
end
如果我要使用3级深度嵌套资源,我必须在我的表单中添加玩家,只接受2个选项。
_form.html.erb
<%= form_for([@season, @sport]) do |f| %>
我会为此使用多对多关联,或者我该如何处理?
答案 0 :(得分:3)
也许这会帮助您清除一些多对多的问题:
通过您的路线,您可能不需要如此深入地嵌套路线......分离可能是更好的方法。(由您决定路线的方式)
我看到一些多对多的关系正在形成。玩家可以玩很多运动,特定运动可以有很多运动员。一个赛季可以有许多不同的运动,多年来这项运动可以有多个赛季。
一旦你弄清楚你的模型,如果你想要一个操纵两个不同模型的表单,你应该看看nested_forms
希望这有助于您开始/清除一些事情!
我也构建了一个体育应用程序(篮球),并遇到了多对多关系和嵌套形式here的一些问题。也许你可以在此途中使用它作为参考/指南