Railsクエリでデータベースから得られたリストをキャッシュするにはどうすればよいですか?Railsクエリでデータベースから得られたリストをキャッシュする方法
@total_untagged = Rails.cache.fetch("tags_controller/untagged/@total_untagged", expires_in: 1.hour) do
InventoryApi::BaseEntity\
.joins(@object_type.to_sym)
.includes(:base_entities_tags)
.where({ base_entities_tags: { base_entity_id: nil }})
.size.to_int
end
このコードはInventoryApi :: BaseEntityモデルをロードし、キー値をキャッシュに保存されます。キャッシュされた結果は、データベースからレイジーロードされ、インスタンスである
tags_controller/untagged/@total_untagged
フィールド値を持つクラスとして熱心に読み込まれません。
キャッシュが読み込まれると、キャッシュが読み取られると、データベースを再度読み取る必要があります。実際にはキャッシュされません。
データベースの関係ではなく、最終結果をキャッシュする方法はありますか?
回答ありがとうございますが、私の質問はそれに関するものではありません。私はかつてキャッシュに保存されていることを知っている必要はありませんが、データベースに戻って、私が欲しいものですが、beeingキャッシュされているデータ自体ではなく、データベースローダーので、データベースから再度ロードされ、私が避けたいと思っていることは素晴らしいものです。 私は既に設定ファイルを変更しました。キャッシュは保存されて使用されていますが、私が言ったように、保存されているものは私が必要としているものではありません。 –
これが当てはまる場合は、データベースから受け取った正確な結果を、関係の代わりにフェッチしてキャッシュしないのはなぜですか。 – VishalTheBeast
私はそれを行う方法を尋ねています。これは私の質問です。 –