質問失礼いたします。
whereで値を取得した後は配列に入っていますが、
やはりwhereで値を取得した後はeachで取り出すしかないのでしょうか?
下記のコードですが、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)
質問
whereで値を取得し変数に入れた後、
同メソッド中でwhereの中に入っている配列の値をハッシュ形式で下記のように取り出す方法はないものでしょうか?
whereでも@hoge.nameのように値を取り出せたらいいなと思っております。
@user = User.find_by(last_name: "yamada") @user.first_name >>"taro"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/15 05:20