Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21085

【初心者】railsのアソシエーションを利用したカラムの表示でハマった話

$
0
0

テーブルの構成

  • groupsテーブル
  • messagesテーブル

アソシエーション

  • groups : has_many :messages
  • messages : belongs_to :group

したかったこと

特定のグループの最新メッセージをアソシエーションを利用して取得したい。

上手くいかなかったコード

messages_controller.rb
#略defindex#略@latest_massage=@group.messages.order(updated_at: :desc).limit(1)end#略defset_group@group=Group.find(params[:group_id])end
index.html.erb
#略@latest_message.content

出力結果 → NoMethodError

contentを取り出せたコード

index.html.erb
#略@latest_message[0].content

学んだこと

  • @group.messages.order(updated_at: :desc).limit(1)では、まだメッセージは配列に格納されたハッシュのままなので、.contentで取り出すためには、要素の指定がいる。配列に格納された状態ではゲッターメソッドは使えない。
  • order(updated_at: :desc).limit(1)を使わなくても、最新メッセージを取得するのであれば、@group.messages.last.contentとするのが手っ取り早い。
  • contentを取り出すだけなら、eachメソッドに@group.messagesを渡して順番に取り出せる。

Viewing all articles
Browse latest Browse all 21085

Trending Articles