2013-03-29 40 views
0

對於bar_id = 1,緩存在第一次訪問時形成。但即使bar_id更改爲2後,值1仍保留。如何通過bar_id工作如何使軌道緩存檢索特定於某個對象ID

@foo = Rails.cache.fetch("foo_by_id", expires_in: 10.minutes) do 
    Foo.where(:search => params['search'], :bar_id => params['bar_id']).first 
end 

回答

1

您的緩存鍵必須包含要將緩存區分開的任何動態數據。 在你的情況下,緩存鍵必須包含bar_id。我會做的是:

@foo = Rails.cache.fetch("foo_by_id:#{params['bar_id']}", expires_in: 10.minutes) do 
    Foo.where(:search => params['search'], :bar_id => params['bar_id']).first 
end 
+0

非常感謝埃雷茲,我非常確定這是正確的修復。有沒有其他模式可以用於緩存 – Rpj

+1

@Rpj這是因爲你的問題太籠統了。如果你有什麼更具體的問題,請發表另一個問題,我很樂意嘗試和幫助。 –