2016-04-29 75 views
1

我想我必須在這裏丟失的東西如何Collection caching - 1.3.1工作。當我將cached: true屬性添加到渲染器時,不會在模型更改時刷新緩存。但是,如果沒有此屬性,它將按預期工作。Rails 5 - 集合緩存不刷新

attending.html.erb

<%= render partial: 'attending_item', collection: @attendees, locals: {reserved: true}, cached: true %> 

_item_attending.html.erb

<% cache([attendee.user, attendee, reserved]) do %> 
    <li class="attendee_id_<%= attendee.id %> <%= reserved ? 'reserved' : 'confirmed' %>"> 
    <%= image_tag(attendee.user.profile.avatar_url(:avatar), size: '25x25') %> 
    <%= attendee.user.full_name %> 
</li> 
<% end %> 

用戶模型將通過touch: true的剖面模型得到更新,所以當他們更新有頭像例如:

belongs_to :user, touch: true 

有人可以向我解釋我缺少什麼或不瞭解收藏緩存如何工作,也許這是一個錯誤Rails

回答

0

這裏遲到了,但我不認爲你的緩存過期了,因爲它依賴於用戶和保留值。

查看合併到Rails中的multi_fetch_fragments gem的更好文檔以增加一些線索。

我想你想改變你的cache: truecache: Proc.new { |attendee| [attendee, user, reserved] }考慮到那裏的變化。

此外,我相信你會想要刪除_item_attending.html.erb文件中的cache塊,因爲部分被自動緩存。