34 lines
826 B
Ruby
34 lines
826 B
Ruby
# Private: Finders of all sorts: methods to find FlashNotify records, methods to find
|
|
# other records which belong to given FlashNotify.
|
|
#
|
|
# This module gets included into FlashNotify.
|
|
module FlashNotify::Finders
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
scope :published, -> { where(published: true) }
|
|
|
|
after_commit :clear_caches
|
|
after_touch :clear_caches
|
|
end
|
|
|
|
module ClassMethods
|
|
|
|
# Public: Get cached first published FlashNotify record.
|
|
#
|
|
# Returns FlashNotify record or nil.
|
|
def published_first_cached
|
|
Rails.cache.fetch('FlashNotify.published.first') do
|
|
published.first
|
|
end
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
# Private: after_commit and after_touch hook which clears find_cached cache.
|
|
def clear_caches
|
|
Rails.cache.delete('FlashNotify.published.first')
|
|
end
|
|
end
|