cache_fuでエリアデータ等のマスターデータをキャッシュしてみる
一応動機
cache_fuの具体的なサンプルがちょっと少なめなので一応晒してみる。
シチュエーション
railsのviewにてエリア選択のセレクトボックスを出力する。エリアデータそのものはそうそう変わるものではないのでキャッシュして高速化wしたい。
view
<%=collection_select :user, :area_id, Area.select_list,:id, :name%>
model
class Area < ActiveRecord::Base # マスターテーブルなのでキャッシュします acts_as_cached :ttl => 10.minutes def self.select_list(set_unselected = true) return self.get_cache(:select_list){ items = self.find(:all, :order => 'id ASC') items.unshift(self.new{|item|item.name = "地域選択";item.id = 0}) if set_unselected } end end
最後に
間違っているところがあったらコメントで突っ込んでいただければ幸いです。