User,Post,Commentの3つのリレーションが、以下の時にコメント一覧でコメントの投稿者名を表示させたい。
user.rb
has_many :posts
has_many :comments
post.rb
belongs_to :user
fas_many :comments
comment.rb
belongs_to :user
belongs_to :post
show.html.erb
<p>コメント一覧</p>
<% @comments.each do |c| %>
<hr>
<a href="/users/#{c.user_id}"><%= c.user.name %></a>
<%= c.content %>
<% end %>
c.user.nameのnameがNoMethodErrorとなるので、posts.controllerに以下の1行追加することでcommentに関係したuserの情報を取り入れることができる。
posts.controller.rb
def show
@comments = @post.comments.includes(:user).all
end