whereで値を取得した後は配列に入っています。
下記のコードですが、Entryモデル中の1つのroom_idには送信者、受信者のuser_idがある。
(1つのroom_idにつき最小、最大2名のみ)
したがって自分以外のuser_idを残すためにwhere.notで自分のuser_idを取得しないようにしている。
@room_idには1つのuser_idしかないのがわかっている中で、
each文での取り出しはスマートではない。
コード
28: @room_id = Entry.where(room_id: params[:id]).where.not(user_id: current_user.id)
29: @room_id.each do |user|
30: @reception_user = User.find(user.user_id)
=> 31: binding.pry
32: end
33: link "#{@reception_user.name}さんとのチャットルーム", user_room_path
@room_idに入っている値です。
> @room_id
=> [#<Entry:0x00007ff76be33a40
id: 2,
user_id: 2,
room_id: 1,
試したこと
配列からハッシュにするto_hメソッドを見つけて試したが、無理な様子。
@room_id = Entry.where(room_id: params[:id]).where.not(user_id: current_user.id)
@room = @room_id.to_h
エラー内容
wrong element type Entry (expected array)
解決法
レコードが1件しかないのがわかっているので、firstで配列を展開から展開されハッシュ形式で@entryに渡っている。
@room_id = Entry.where(room_id: params[:id]).where.not(user_id: current_user.id).first