У меня много has_many: через отношения в моем приложении.Я показываю информацию, связанную с этим, например количество подключенных объектов.Всякий раз, когда пользователь обновляет отношение, таблица присоединения изменяется, и я могу поймать это на своих Sweepers.
Проблема заключается в том, что записи таблицы присоединения удалены , а не уничтожены .Если связь исчезла, у меня нет разумного способа обнаружить это, и я отображаю вводящую в заблуждение информацию из кэша.Все как: touch => true или: counter_cache => true работает частично.Это увеличивается, если отношения обновляются или создаются.Но если пользователь удаляет связь, ничего не происходит.: counter_cache не работает,: touch не срабатывает.
Мусорным решением является вызов .touch в контроллере, когда сохраняется основная модель.Этот вид работает, но, кажется, действительно непрофессионально.Это должно быть в логике модели, а не в контроллерах.
Я чувствую, что упускаю что-то большое, но не могу понять это.Кто-нибудь мог бы пролить свет на эту проблему?