Итак, вот сделка: у меня две модели, игрок и команда. Каждая команда имеет несколько игроков, и каждый игрок принадлежит команде. Код (опуская несколько ненужных atributes от модели плеера):Как правильно реализовать объединение двух моделей/объектов через seeds.rb в Rails?
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» в консоли rails, все, что я получаю, это «=> nil». НО, когда я сам определяю команду (все еще в консоли), набрав «@ player.team = Team.find (1)», связь достигается просто отлично (в результате аргумент «player.team» возвращает данные для команды с id команды: 1).
Предполагаю, что мне нужно изменить контроллер проигрывателя или что-то в этом роде? Если да, то чем отличается, когда я сопоставляю две модели с консоли, а не с seeds.rb?
или team_id: рандов (1..rndm) – RadBrad
Там нет «team_id» атрибут, хотя, ни в модели команды, ни в проигрывателе один. Должен ли я добавить его к тому и другому? (Я получаю «неизвестный атрибут: team_id», когда я запускаю rake db: seed сейчас) – sebkkom
Если игроку принадлежит команда, игрокам будет нужен атрибут team_id. – RadBrad