В приложении rails есть следующий очиститель:
class AgencyEquipmentTypeSweeper < ActionController::Caching::Sweeper
observe AgencyEquipmentType
#include ExpireOptions
def after_update(agency_equipment_type)
expire_options(agency_equipment_type)
end
def after_delete(agency_equipment_type)
expire_options(agency_equipment_type)
end
def after_create(agency_equipment_type)
expire_options(agency_equipment_type)
end
def expire_options(agency_equipment_type)
Rails.cache.delete("agency_equipment_type_options/#{agency_equipment_type.agency_id}")
end
end
Мы хотели бы извлечь обратные вызовы after_update, after_delete и after_create в модуль с именем "ExpireOptions"
модуль должен выглядеть следующим образом (с сохранением метода expire_options в исходном очистителе):
module ExpireOptions
def after_update(record)
expire_options(record)
end
def after_delete(record)
expire_options(record)
end
def after_create(record)
expire_options(record)
end
end
class AgencyEquipmentTypeSweeper < ActionController::Caching::Sweeper
observe AgencyEquipmentType
include ExpireOptions
def expire_options(agency_equipment_type)
Rails.cache.delete("agency_equipment_type_options/#{agency_equipment_type.agency_id}")
end
end
НО срок действия кэша работает только в том случае, если мы явно определяем методы внутри очистителя,Есть ли простой способ извлечь эти методы обратного вызова в модуль и при этом заставить их работать?