class Repertoire < ApplicationRecord has_many :sub_repertoires, ->{order(updated_at: :desc)}, :dependent => :destroy has_many :tag_repertoires, through: :sub_repertoires has_many :user_interests, dependent: :delete_all after_create_commit :reset_cache_data after_update_commit :reset_cache_data def self.cache_data Rails.cache.fetch(data_cache_key, expires_in: 1.days) do Repertoire.select(:id, :name).order(:created_at).as_json end end def self.data_cache_key 'repertoire/cache_data' end private def reset_cache_data Rails.cache.delete(self.class.data_cache_key) end end