質問: ### エラーを解消したい Ruby on Railsでツイッターの様なSNSサービスをprogateのカリキュラムに沿って作っています。 レッスン通り完成させて問題なく機能していたと思っていたのですが、日を置いてログインしようとすると以下のエラーメッセージが発生しました。(要は何の編集中に発生したエラーか覚えていない) どなたか原因わかる方いらっしゃいましたらご教示くださいませ。。。 ### 発生している問題・エラーメッセージ ``` undefined method `image_name' for nil:NilClass ``` ### 該当のソースコード ``` "> ``` ### 試したこと ■public ・「user_images」フォルダ内に画像が格納されているか(されている) ■db系 ・uesrテーブルのimage_nameカラム(ユーザのアイコン名)がnillではないか(ではなかった) ・postsテーブルのuser_idカラムがnillではないか(ではなかった) ### 補足情報(FW/ツールのバージョンなど) railsバージョン:Rails 5.2.0 *該当ソースコードの全コード* <% @posts.each do |post| %> "> <%= link_to(post.user.name,"/users/#{post.user.id}") %> <%= link_to(post.content, "/posts/#{post.id}") %> <% end %>
回答: `undefined method `image_name' for nil:NilClass` というエラーメッセージから、 `post.user` が nil になってしまっているものが存在することが読み取れます。 考えられる原因として次の2つがあります。 1. データが壊れており対応する user が存在しない post が存在する 2. データは壊れてないけどモデルが壊れてて post.user が nil を返すことがある なんとなく雰囲気的に前者な気がするので、DBを調べてみてください。 ``` select posts.id, posts.user_id, users.id from posts left outer join users on posts.user_id = users.id; ``` ↑のクエリで users.id 列が空のレコードがあったらそいつが原因です。