我的代码在生产中运行良好。我在主分支上搞了几行,删除了我的本地仓库,重新克隆了它,现在应用程序抛出了这个错误:
df['metadata'] == 'MM'
现在这很愚蠢,因为我的代码对我来说是100%的...视图:
undefined method `user_name' for nil:NilClass
这是我对show的控制器操作:
<div id="comment-container">
<% @comments.each do |comment| %>
<div class="well well-sm comment-well">
<button class="btn btn-sm btn-default" id="comment-name"><%= comment.user.user_name %></button>
<div id="com-text">
<p><%= comment.body %></p>
</div>
</div>
<% end %>
</div>
我的关联是正确的,我的用户有一个user_name!
此代码正在制作中!这让我发疯了我今晚倒退了!
答案 0 :(得分:0)
您的user
似乎是nil
。也许您从数据库中删除了用户,并且在您的关系中没有dependent: :destroy
。
如果评论可以在没有用户的情况下存在,那么最好的办法就是使用委托来避免这类问题。
在评论模型中,您可以添加
delegate :user_name, to: :user, allow_nil: true
之后,你可以写comment.user_name
,它会在出现时返回正确的结果,否则会nil
。
请注意,它仍然需要查询users
表,因此您仍然需要includes(:user)
来避免N+1
查询问题。
答案 1 :(得分:0)
似乎特定的 帖子 没有与之关联的 用户 。要解决此错误,请使用try。
<%= comment.user.try(:user_name) %>