2

私はほぼ 1 年間 Rails を使用してきましたが、いつ多対多の関連付けを使用すればよいかわからない状況に陥っています。これが私の現状です。

playerseason、およびsportがあります。

player.rb

has_many :seasons, :dependent => :destroy

シーズン.rb

belongs_to :player
has_many :sports, :dependent => :destroy

スポーツ.rb

belongs_to :season

プレーヤーにはhas_many :seasons があり、シーズンはプレーヤーに属します。次に、シーズンに属するスポーツがあり、シーズンには has_many :sports があります。

私が望むのは、プレーヤーが新しいシーズン (例: 2011-2012、2012-2013、2014-2015 など) を追加し、シーズンが作成された後、プレーヤーが現在プレイしているスポーツを追加することですシーズン。この時点で非常に混乱しています。現在の方法では、3 レベルの深さのネストされたリソースを使用する必要があるためです。

ルート.rb

resources players do 
  resources :seasons do 
    resources :sports
  end
end

3 レベルの深くネストされたリソースを使用する場合、2 つのオプションしか受け付けないフォームにプレーヤーを追加する必要があります。

_form.html.erb

<%= form_for([@season, @sport]) do |f| %>

これに多対多の関連付けを使用しますか、またはこれにどのようにアプローチする必要がありますか?

4

1 に答える 1

3

多分これはあなたが持っているいくつかの多対多の質問を解決するのに役立つでしょう:

多対多

ルートを使用すると、ルートをそれほど深くネストする必要がない場合があります...分離する方が良いアプローチかもしれません(ルーティング方法についてはあなた次第です)

多対多の関係がいくつか形成されているのがわかります。プレーヤーは多くのスポーツをすることができ、特定のスポーツには多くのプレーヤーがいる可能性があります。シーズンにはさまざまなスポーツがあり、スポーツには何年にもわたってさまざまなシーズンがあります。

モデルを理解したら、2つの異なるモデルを操作するフォームが必要な場合は、nested_formsを調べる必要があります。

Nested_forms

うまくいけば、これはあなたがあなたのためにいくつかのことを始める/クリアするのに役立つでしょう!

私もスポーツアプリ(バスケットボール)を作って、ここで多対多の関係や入れ子の形でいくつかの問題に遭遇しました。多分あなたは途中でこれを参照/ガイドとして使うことができます

于 2012-04-25T04:23:45.340 に答える