:ActiveRecordネストされたレコードでの使用方法を含める?私は現在、次のを持っている
@threads = current_user.threads.includes(:user, :thread_members)
私は、その後のスレッドを取ると、次の操作を行います。ここ
@threads.each do |thread|
thread_members = thread.thread_members_active(current_user)
@threadList << {
:id => thread.id,
:uuid => thread.uuid,
:user_id => thread.user.id,
:last_activity_at => thread.last_activity_at,
:user_count => thread_members.length,
:user_photos => thread_members.collect { |thread_member|
{
:id => thread_member.user.id,
:photo => thread_member.user.photo(:thumb),
:name => thread_member.user.full_name
}
},
:caption => thread.caption
}
end
問題は、すべての各ループ、レールが同じ基本的なレコードをDBに当たっているということです。ログにCACHEが表示されているように、Railsはキャッシュされているように見えますが、それは大変です。私はいくつかのタイプのインクルードを行うことができると願っていますので、dbリクエストはそれほど多くありませんでした。
これをどのように最適化することができますか?あるDBヒットのすべてのユーザーを含む何かの周り何か?
おかげ
thread_members_activeのコードは何ですか? –
@Cypherこれは、以下を行うメソッドです。return self.thread_members.joins(:user).where( "users.guest = false OR users.guest = true AND users.fnameはNULLでないかusers.id =#{ current_user.id} ") – AnApprentice