Revision: 9287
Updated Code
at October 28, 2008 17:46 by jnunemaker
Updated Code
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
Revision: 9286
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 28, 2008 17:45 by jnunemaker
Initial Code
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
Initial URL
https://gist.github.com/20515/67021078e8c1a73260f94e3df29cf514e6334ccb
Initial Description
Initial Title
active record cache expensive methods
Initial Tags
rails
Initial Language
Ruby