5 つのタグがあるとしますtag1,tag2...tag5
。私が次のことをした場合:
Rails.cache.fetch("all.tags") { Tag.all }
その後、 と書くRails.cache.fetch("all.tags")
と、5 つのタグが表示されます。別のタグを追加して、キャッシュから再度取得しようとすると、新しいタグも読み込まれます。何故ですか?
編集:これが私の実際のコードです:
Rails.cache.fetch("autocomplete.#{term}") { puts "Cache miss #{term}"; Tag.starting_with(term) }
どこstarting_with
で特定の文字で始まるタグを見つける場所を実行しています。コンソールでの動作は次のとおりです。
1.9.3p125 :046 > Rails.cache.read("autocomplete.ta")
Tag Load (1.0ms) SELECT "tags".* FROM "tags" WHERE (name like 'ta%')
=> [#<Tag id: 10, name: "tag1">, #<Tag id: 11, name: "tag2">, #<Tag id: 12, name: "tag3">, #<Tag id: 13, name: "tag4">]
1.9.3p125 :048 > Tag.create(name:"tag5")
(0.2ms) begin transaction
SQL (1.0ms) INSERT INTO "tags" ("name") VALUES (?) [["name", "tag5"]]
(150.9ms) commit transaction
=> #<Tag id: 14, name: "tag5">
1.9.3p125 :049 > Rails.cache.read("autocomplete.ta")
Tag Load (0.8ms) SELECT "tags".* FROM "tags" WHERE (name like 'ta%')
=> [#<Tag id: 10, name: "tag1">, #<Tag id: 11, name: "tag2">, #<Tag id: 12, name: "tag3">, #<Tag id: 13, name: "tag4">, #<Tag id: 14, name: "tag5">]