У меня есть процесс глубокого клонирования в моем приложении rails, а также процесс рекурсивного удаления, который удаляет узел дерева и его потомков и их ассоциации. Обе эти процедуры имеют проблемы, когда: touch => true применяется к отношениям. Это нормально, когда мы просто обновляем одну запись, чтобы изменение коснулось всех родительских записей ассоциациями и древовидной структурой, но когда мы имеем дело с массовым созданием или удалением, имеет смысл отключить прикосновение к длительности этого вызова.Отключить прикосновение к длительности блока в ActiveRecord
Я ищу направление вокруг того, как бы я определил метод, который принимает блок для запуска кода, который не активировал бы сенсорный метод для объектов.
Я думаю, возможно, только перед уступкой я должен установить глобальное? переменная, указывающая, что касание отключено, а затем переопределить метод касания, чтобы сначала проверить эту переменную перед вызовом супер (или не так, как в случае с этим).
Любая помощь, чтобы закрепить это в фактическом коде, будет оценена по достоинству. :)
Привет! Как вы в итоге подошли к этому? Я рассматриваю аналогичный случай для тестирования: http://stackoverflow.com/questions/18922864/how-to-disable-belongs-to-touch-option-in-rspec-tests-for-rails-models – dgilperez
Я никогда обошел это. Я просто должен был согласиться с тем, что обновление происходит очень медленно, и ошибка при удалении, если что-то не выполняется в правильном порядке. Rails 3 лучше в том, что он не пытается сохранить всю модель, просто обновите временные метки в изоляции, что намного лучше. Нет такой удачи для Rails 2, где этот проект все еще застрял! : D –