だから、ここでは取引です:私は2つのモデル、プレーヤーとチームを持っています。すべてのチームにはたくさんの選手がいて、すべての選手はチームに所属しています。 (プレーヤモデルからいくつかの不要なatributesを省略)コード:Railsでseeds.rb経由で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
ここで、上記のコードは、チームとプレーヤーをうまく作成します。しかし、それは選手をチームに関連付けるものではありません。それは彼らをチームに結びつけません。つまり、「@player = Player.find(1)」と「@ player.team」と入力すると、「=> nil」と表示されます。しかし、私は自分自身を(まだコンソール上に)「@ player.team = Team.find(1)」とタイプして指定すると、関連付けはうまくいきます(結果として「player.team」という引数が返されます)チームid:1のチームの場合)。
Playerコントローラーなどを変更する必要があると思いますか?もしそうなら、私はseeds.rbからではなくコンソールから2つのモデルを関連付けるときに何が違うのですか?
または TEAM_ID:ランド(1..rndm) – RadBrad
ない「TEAM_ID」属性はいえ、どちらのチームモデルでもプレイヤー1ではありません。私はそれを両方に加える必要がありますか? (私はrake db:seedを実行すると "unknown attribute:team_id"を得ています) – sebkkom
PlayerがTeamに属している場合、playersテーブルにはteam_id属性が必要です。 – RadBrad