Sha256: dd50ff8aef6a7ab4b62a3dc5ba64bbc1aaf36b7daa51c87dbe6e83d44fcb12b5

Contents?: true

Size: 548 Bytes

Versions: 31

Compression:

Stored size: 548 Bytes

Contents

module Concerns
  module Cacheable
    extend ActiveSupport::Concern

    included do
      after_save :flush_cache
      after_touch :flush_cache

      scope :find_in_cache, ->(value) {
        Rails.cache.fetch [name, value, Rails.env] do
          find_by!(@cache_field => value)
        end
      }
    end

    module ClassMethods
      def cache_by(field)
        @cache_field = field

        define_method(:flush_cache) do
          Rails.cache.delete [self.class.name, self.send(field), Rails.env]
        end
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
udongo-7.9.0 app/models/concerns/cacheable.rb
udongo-7.8.1 app/models/concerns/cacheable.rb
udongo-7.8.0 app/models/concerns/cacheable.rb
udongo-7.7.2 app/models/concerns/cacheable.rb
udongo-7.7.1 app/models/concerns/cacheable.rb
udongo-7.7.0 app/models/concerns/cacheable.rb
udongo-7.6.2 app/models/concerns/cacheable.rb
udongo-7.6.1 app/models/concerns/cacheable.rb
udongo-7.6.0 app/models/concerns/cacheable.rb
udongo-7.5.1 app/models/concerns/cacheable.rb
udongo-7.5.0 app/models/concerns/cacheable.rb
udongo-7.4.2 app/models/concerns/cacheable.rb
udongo-7.4.1 app/models/concerns/cacheable.rb
udongo-7.4.0 app/models/concerns/cacheable.rb
udongo-7.3.5 app/models/concerns/cacheable.rb
udongo-7.3.4 app/models/concerns/cacheable.rb
udongo-7.3.3 app/models/concerns/cacheable.rb
udongo-7.3.2 app/models/concerns/cacheable.rb
udongo-7.3.1 app/models/concerns/cacheable.rb
udongo-7.2.1 app/models/concerns/cacheable.rb