1

私の2つのモデル:

Class TeamHistory < ActiveRecord::Base
  has_many :player_to_team_histories
  has_many :players, through: :player_to_team_histories

  belongs_to :team
end

Class Player < ActiveRecord::Base
  has_many :player_to_team_histories
  has_many :team_histories, through: :player_to_team_histories
end

player_to_team_historiesを使用して を作成することはできませんが、@team_history.players.build正常に動作します@team_history.players.create

>>team = Team.create
>>team_history = team.team_histories.create
>>player = team_history.players.create
>>player.team_histories.count
1
>>player2 = team_history.players.build
>>player2.team_histories.count
0
>>player2.save
>>player2.team_histories.count
0
4

1 に答える 1

1

すぐに答えがわからなかったので、これについて掘り下げました。アソシエーションモデルをセットアップすることはわかりました#buildが、親モデルから子までのみです。これは、上記の例では、レールが設計どおりに動作していることを意味します。

>>team = Team.create
>>team_history = team.team_histories.create
>>player = team_history.players.create
>>player.team_histories.count
1
>>player2 = team_history.players.build
>>player2.team_histories.count
0

これは全く予想通りです。電話した場合:

>>team_histories.players

新しいプレーヤーがリストに表示されます。したがって、代わりに:

>>player2.save

あなたが走った:

>>team_histories.save

新しいプレーヤーが保存されます。

このSOの質問に対するジョナサン・ウォレスの答えは、基本的に同じことを言っています。

于 2012-08-09T23:26:11.650 に答える