防止 nil:NilClass 的未定义方法“名称”呈现 nil 用户对象

Prevent undefined method `name' for nil:NilClass for rendering nil User object

在我的登陆页面上,我试图列出一个游戏模型的所有实例以及与之关联的相应分配模型。创建游戏时,也会创建作业。唯一传递给该作业的是 game_id。其他 3 个参数保留为零。如何在没有 undefined method 'name' for nil:NilClass 的情况下显示游戏。我认为这可以通过设置 optional: true 来解决,但我想不会。

我确实在 _feed.html.erb 文件中了解到它会返回该错误,因为它需要一个用户对象,所以我是否只需要在其中加入一些逻辑来防止这种情况发生?最后,如果center_refereeassistant_referee_1、and/or、assistant_referee_2还没有设置,我需要它显示空白

_feed.html.erb

<div>
    <% @games.each do | game | %>
            <p ><%= game.home_team %> vs <%= game.away_team %></p>
            <p >Center Referee: <%= game.assignment.center_referee.name %></p>
            <p >AR1: <%= game.assignment.assistant_referee_1.name %></p>
            <p >AR2: <%= game.assignment.assistant_referee_2.name %></p>
            <br></br>
    <% end %>
</div>
models/game.rb

class Game < ApplicationRecord
    has_one :assignment, dependent: :destroy
    has_many :users, through: :assignment

    after_save :create_assignment

    def create_assignment
        Assignment.create(game_id: id)
    end
end
models/assignment.rb

class Assignment < ApplicationRecord
    belongs_to :game

    belongs_to :center_referee, class_name: 'User', optional: true
    belongs_to :assistant_referee_1, class_name: 'User', optional: true
    belongs_to :assistant_referee_2, class_name: 'User', optional: true

    accepts_nested_attributes_for :game    
end

使用&

game.assignment.center_referee&.name

这是一个安全的导航运算符,在 Ruby 2.3.0 中引入。您可能会发现 docs here.

如果您想阅读更多相关信息,可以获取 here (sent by @crodev)