[問題] Rails Cache
環境:
e.g. Ruby 1.9.3, Rails 3.1.1
狀況:
目前我有一個頁面大致上是長這個樣子的 (in slim):
#posts
- cache [@posts.latest, @posts.current_page, current_user] do
- @posts.each do |post|
= post.title
= post.body
.links
= edit_post_link(post) if current_user.can?(:edit, post)
= paginate @posts
我想將整個 #posts cache, 但又希望 .links 因人而異,
所以我的 cache key 就必須含有最新一篇 post, 目前頁數以及 current_user,
而我希望能夠指定某一部份不要 cache (.links),
這樣我就可以拿掉 current_user, 讓所有 user 可以共用同一份 posts cache,
但我想這應該是做不到的事情? 所以我想從設計上著手,
目前我想到的兩個方法是:
1. 把編輯的連結移到各個 posts 的 show action,
該頁的 cache key 可以化簡成 [@post, current_user.can?(:edit, post)]
2. 把 .links 移出 #posts 外, 頁面讀入時再用 js 組合起來
基於不想隨意改變使用者習慣的前提下, 我不想選用 1 的方式, 但又覺得 2 好醜 XD
不知道有沒有其他更好的方式去解決這個問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.114.185.227
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章