Module: ModelCached::InstanceMethods

Defined in:
lib/model_cached.rb

Instance Method Summary collapse

Instance Method Details

#expire_mc_keysObject



60
61
62
63
64
# File 'lib/model_cached.rb', line 60

def expire_mc_keys
  mc_columns.each do |column|
    Rails.cache.delete(mc_key(column))
  end
end

#mc_columnsObject



48
# File 'lib/model_cached.rb', line 48

def mc_columns; self.class.mc_options[:columns]; end

#mc_key(column, value = nil) ⇒ Object



52
53
54
# File 'lib/model_cached.rb', line 52

def mc_key(column, value=nil)
  self.class.mc_key(column, value || self.send(column), mc_scope_key)
end

#mc_logical_deleteObject



50
# File 'lib/model_cached.rb', line 50

def mc_logical_delete; self.class.mc_options[:logical_delete]; end

#mc_scopeObject



49
# File 'lib/model_cached.rb', line 49

def mc_scope; self.class.mc_options[:scope]; end

#mc_scope_keyObject



56
57
58
# File 'lib/model_cached.rb', line 56

def mc_scope_key
  "#{mc_scope}:#{self.send(mc_scope)}" if mc_scope
end

#refresh_mc_keysObject



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/model_cached.rb', line 66

def refresh_mc_keys
  if mc_logical_delete && send(mc_logical_delete)
    expire_mc_keys
  else
    mc_columns.each do |column|
      Rails.cache.write(mc_key(column), self)
      if send("#{column}_changed?")
        Rails.cache.delete(mc_key(column, send("#{column}_was")))
      end
    end
  end
end