「Mailboxer」( https://github.com/ging/mailboxer )という gem を使用しています
。これにより、Rails アプリ内でメッセージング システムが有効になります。
この gem では、各ページに 10 件の受信メッセージを表示しています。
ここではページネーションにカミナリを使用しています。
しかし、私のコードでは遅すぎます。一度に 25 以上の sql を発行しています :( どうすればこれを高速化できますか? 1 ページを表示するのに 1500 ミリ秒以上かかります。
これが私のコードです これの何が問題なのですか? これを高速化するテクニックはありますか?
コントローラ
@number_of_messages_to_display = 10
@messages = current_user.mailbox.inbox.page(params[:page]).per(@number_of_messages_to_display)
@messages_count = current_user.mailbox.inbox.count
ビュー (メッセージ/index.html.erb)
<%= @messages_count.to_s %> messages in your received message box.
<table>
<% @messages.each do |m| %>
<tr>
<td><%= check_box_tag "id[]",m.id %></td>
<td><%= if m.is_read?(current_user) then "Read" else "Un-read" %></td>
<td><%= profile_link(m.recipients.first) if m.recipients.first != current_user %></td>
<td><%= link_to m.subject, show_messages_path(:id => m) %></td>
<td><%= today_datetime(m.last_message.created_at) %></td>
</tr>
<% end %>
</table>
ビュー (ヘルパー/application_helper.rb)
def profile_link(user)
if user
nickname = user.user_profile.try(:nickname)
username = user.try(:username)
link_to nickname, show_user_path(username)
else
"Un-known"
end
end
def today_datetime(date_time)
date_time.to_date == Date.current.to_date ? "<span class='text-info'>#{date_time.to_s(:us)}</span>".html_safe : date_time.to_s(:us)
end
ルート.rb
get 'messages/:id' => 'messages#show', :as => :show_messages
get "users/:id" => 'users#show', :as => :show_user
models/user.rb
def to_param
"#{username}"
end