У меня есть 3 модели, которые взаимодействуют:ActiveRecord has_many ассоциации нуль
Sessions
- Каждый
Session
имеет несколькоSessionPlayer
s - Каждый
SessionPlayer
принадлежитPlayer
На соответствующем индексе сессии , Я пытаюсь отобразить список игроков сеанса для данного сеанса, и каждый сеанс имя игрока игрока - session_player.player.name
. Запуск страницы Rails предоставляет мне правильные данные, но во время тестирования у меня проблема.
В index.html.erb странице я использую следующий цикл:
<% @sessions.each do |session| %>
<% session.session_player.each do |player| %>
<div><%= player.player.name %></div>
<% end %>
<% end %>
Когда код выполняется во время теста, он получает нулевое исключение на player.player
, однако я могу отладить его и его имеет значение, установленное правильно для player.player_id
, заставив меня поверить, что что-то не так с моим кодом модели или каким-то странным кэшированием происходит во время теста.
Session
модель
class Session < ActiveRecord::Base
has_many :session_player
has_many :player, through: :session_player
end
SessionPlayer
модель
class SessionPlayer < ActiveRecord::Base
belongs_to :player
belongs_to :session
end
Player
модель
class Player < ActiveRecord::Base
has_many :session_player
has_many :session, through: :session_player
end
Данные испытаний и арматура оба шаблонный создана с помощью RubyMine (как были контроллеры и модели) , но я могу p если это необходимо.
первую очередь попытаться изменить: 'has_many: session_players' –
и второй:' session.session_players.each' –