/ Published in: Ruby
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
class ActiveRecord::Base @@cache_store = nil def self.cache_store @@cache_store ||= ActionController::Base.cache_store end def self.caches(method_name, key = nil, options = {}, &block) if key.is_a?(Hash) options = key key = nil end define_method "cached_#{method_name}" do key = instance_eval(&block) if block self.class.cache_store.fetch("#{method_name}:#{key}", options) { send(method_name) } end end end class MyModel < ActiveRecord::Base caches(:expensive_query, :expires_in => 15.minutes) { "#{id}:#{id.updated_at.to_i}" } end
URL: https://gist.github.com/20515/67021078e8c1a73260f94e3df29cf514e6334ccb