From cb9168d63c2914e2e3e6037e2c4945b0982ca00b Mon Sep 17 00:00:00 2001 From: yamato-1205 Date: Mon, 15 Jan 2024 09:41:19 +0900 Subject: [PATCH 1/2] =?UTF-8?q?n+1=E5=95=8F=E9=A1=8C=E3=81=AE=E8=A7=A3?= =?UTF-8?q?=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/channels/chat_channel.rb | 10 +++++++++- app/controllers/messages_controller.rb | 6 +++--- spec/requests/messages_spec.rb | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/channels/chat_channel.rb b/app/channels/chat_channel.rb index 8cccad1..9e78970 100644 --- a/app/channels/chat_channel.rb +++ b/app/channels/chat_channel.rb @@ -13,7 +13,15 @@ def chat(data) user_id: current_user.id, content: data['text'] ) - ActionCable.server.broadcast("chat_channel_#{message.room.workspace.id}", message) + + message_data = message.attributes.symbolize_keys + + reactions = Reaction.where(message_id: message_data["id"]).order(name: :desc) + message_data.store(:reactions, reactions) + user = User.select(:id, :name, :email, :image).find(message_data["user_id"]) + message_data.store(:user, user) + message_data.delete(:user_id) + ActionCable.server.broadcast("chat_channel_#{message.room.workspace.id}", message_data) end def chat_delete(data) diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index f75e43d..4dbe5d3 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -4,7 +4,7 @@ class MessagesController < ApplicationController def index params = index_params - messages = Room.find(params[:room_id]).messages.order("created_at DESC").page(params[:page]).per(20) + messages = Room.find(params[:room_id]).messages.order("created_at DESC").page(params[:page]).per(20).preload(:reactions, :user) if messages.blank? render status: 200, json: messages return @@ -13,9 +13,9 @@ def index each_message = messages.map { |p| p.attributes.symbolize_keys } messages.each_with_index do |message, i| - reactions = Reaction.where(message_id: message["id"]).order(name: :desc) + reactions = message.reactions.order(name: :desc) each_message[i].store(:reactions, reactions) - user = User.select(:id, :name, :email, :image).find(message["user_id"]) + user = message.user.slice(:id, :name, :email, :image) each_message[i].store(:user, user) each_message[i].delete(:user_id) end diff --git a/spec/requests/messages_spec.rb b/spec/requests/messages_spec.rb index ab74869..7a7fa53 100644 --- a/spec/requests/messages_spec.rb +++ b/spec/requests/messages_spec.rb @@ -29,6 +29,7 @@ expect(response).to have_http_status :ok res = JSON.parse(response.body) expect(res['messages'].length).to eq(20) + print(res) # expect(res['messages']).to match_array(lower_camel_key_hash(messages.map { |message| MessageSerializer.new(message).as_json })) end end From 4e922c85e9dc5e2da4f3f558fc8a9af83ec4ac1f Mon Sep 17 00:00:00 2001 From: yamato-1205 Date: Mon, 15 Jan 2024 09:44:52 +0900 Subject: [PATCH 2/2] =?UTF-8?q?rubocop=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/channels/chat_channel.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/channels/chat_channel.rb b/app/channels/chat_channel.rb index 9e78970..06357bb 100644 --- a/app/channels/chat_channel.rb +++ b/app/channels/chat_channel.rb @@ -13,7 +13,7 @@ def chat(data) user_id: current_user.id, content: data['text'] ) - + message_data = message.attributes.symbolize_keys reactions = Reaction.where(message_id: message_data["id"]).order(name: :desc)