class Department < ApplicationRecord belongs_to :school has_many :department_members, dependent: :destroy after_create_commit :reset_data_cache after_update_commit :reset_data_cache def self.cached_names_data(school) Rails.cache.fetch(names_data_cache_key(school.id), expires_in: 7.days) do school.departments.select(:id, :name).as_json end end private def reset_data_cache # 清除部门名称缓存 if new_record? || name_previously_changed? Rails.cache.delete(self.class.names_data_cache_key(school_id)) end end def self.names_data_cache_key(school_id) "schools/#{school_id}/department_names_data" end end