Rails:何时使用多对多关联?

时间:2012-04-25 03:21:41

标签: ruby-on-rails ruby ruby-on-rails-3

我一直在使用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| %>

我会为此使用多对多关联,或者我该如何处理?

1 个答案:

答案 0 :(得分:3)

也许这会帮助您清除一些多对多的问题:

Many-to-Many

通过您的路线,您可能不需要如此深入地嵌套路线......分离可能是更好的方法。(由您决定路线的方式)

我看到一些多对多的关系正在形成。玩家可以玩很多运动,特定运动可以有很多运动员。一个赛季可以有许多不同的运动,多年来这项运动可以有多个赛季。

一旦你弄清楚你的模型,如果你想要一个操纵两个不同模型的表单,你应该看看nested_forms

Nested_forms

希望这有助于您开始/清除一些事情!

我也构建了一个体育应用程序(篮球),并遇到了多对多关系和嵌套形式here的一些问题。也许你可以在此途中使用它作为参考/指南