(Dalli / Memcachedストアを使用して)フラグメントキャッシュを生成しようとしていますが、キーの一部として「#」を使用してキーが生成されているため、Railsはキャッシュ値があることを認識していないようで、ヒットしていますデータベース。
ビューのキャッシュキーは次のようになります。
cache([@jobs, "index"]) do
コントローラには次のものがあります。
@jobs = @current_tenant.active_jobs
次のような実際のActiveRecordクエリを使用します。
def active_jobs
self.jobs.where("published = ? and expiration_date >= ?", true, Date.today).order("(featured and created_at > now() - interval '" + self.pinned_time_limit.to_s + " days') desc nulls last, created_at desc")
end
Railsサーバーを見ると、キャッシュが読み取られているのがわかりますが、SQLクエリは引き続き実行されます。
Cache read: views/#<ActiveRecord::Relation:0x007fbabef9cd58>/1-index
Read fragment views/#<ActiveRecord::Relation:0x007fbabef9cd58>/1-index (1.0ms)
(0.6ms) SELECT COUNT(*) FROM "jobs" WHERE "jobs"."tenant_id" = 1 AND (published = 't' and expiration_date >= '2013-03-03')
Job Load (1.2ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."tenant_id" = 1 AND (published = 't' and expiration_date >= '2013-03-03') ORDER BY (featured and created_at > now() - interval '7 days') desc nulls last, created_at desc
私が間違っているかもしれないことについて何か考えはありますか?キーの生成とActiveRecord::Relationshipを使用する必要があると確信していますが、その方法はわかりません。