Загадка кеширования: истекающие удаленные модели - PullRequest
1 голос
/ 01 ноября 2011

Мне нужно завершить кеш родительской модели после обновления, но если обновление удаляет родительскую ассоциацию, родитель не будет найден, поэтому кеш не истек. watdo & ___ &

Это на самом деле freedrull , поэтому он добавит любые пояснения.

1 Ответ

0 голосов
/ 01 ноября 2011

after_update действительно будет тем, что вам нужно, хотя вполне возможно, что ассоциация уже тогда исчезла. Я бы посоветовал проверить это предположение, создав after_update, который просто устанавливает на удаленную связь. Если вы все еще можете получить его - тогда хорошо. используйте это, чтобы очистить фрагменты кэша.

в противном случае я бы предложил что-то вроде "обратного" обратного вызова, немного хакерский, но должен получить то, что вам нужно:

в обратном вызове before_update сохраните @variable для ваших ассоциаций, а затем проверьте, изменились ли они в after_update

before_update :save_associations
after_update :expire_old_associations
def save_associations
   @associations_to_check = self.widgets
end
def expire_old_associations
   diff = @associations_to_check - self.widgets
   expire_fragments_for(diff) if diff.present?
end

Смотрите доступные обратные вызовы здесь:

http://apidock.com/rails/ActiveRecord/Callbacks

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...