だから、ここに取り引きがあります: 私は 2 つのモデル、プレーヤーとチームを持っています。すべてのチームには_多くのプレーヤーがいて、すべてのプレーヤーは_チームに属しています. コード (プレーヤー モデルからいくつかの不要な属性を省略):
class Team < ActiveRecord::Base
attr_accessible :name, :points, :rank
has_many :players
class Player < ActiveRecord::Base
attr_accessible :name, :age, :pos, :team
belongs_to :team
私は、seeds.rb を使用していくつかのチームと多数のプレーヤーを作成し、次にプレーヤーをチームに入れようとしています (つまり、実際に「has_many」と「belongs_to」の関連付けを実装しようとしています)。コード:
rndm = rand(1..10) #random number of teams
rndm.each do |i| #create rndm teams
i = i.to_s
Team.create(name: 'Team'+i, points: 0, ranking: 0)
end
for i in 1..rndm*22 do #create rndm*22 players (ideally 22 for each team)
i = i.to_s
Player.create(name: 'Player'+i, age: rand(15..35),
pos: 'Not specified', team: Team.find(rand(1..rndm)))
end
さて、上記のコードはチームとプレーヤーをうまく作成します。ただし、プレーヤーをチームに関連付けることはできません。それらをチームに関連付けることはまったくありません。つまり、Rails コンソールで「@player = Player.find(1)」と「@player.team」と入力すると、「=> nil」しか表示されません。しかし、「@player.team = Team.find(1)」と入力して自分で (まだコンソールに) チームを指定すると、関連付けが正常に行われます (「player.team」引数で詳細が返されます)。チーム ID: 1 のチームの場合)。
Playerコントローラーなどを変更する必要があると思いますか?もしそうなら、seeds.rb からではなくコンソールから 2 つのモデルを関連付けると何が違うのでしょうか?