Ответ 1
Вы можете использовать touch
, он запускает обратные вызовы, когда он сохраняет.
Альтернативно отключить partial_updates: ActiveRecord::Base.partial_updates = false
Чтобы очистить некоторые плохие данные, я добавил перед вызовом сохранения. Теперь мне нужно снова принудительно сохранить все модели. Однако никакая операция обновления не выполняется, если я это делаю
User.first.save
Как заставить все модели выполнять операцию сохранения, даже если у меня нет каких-либо атрибутов.
Вы можете использовать touch
, он запускает обратные вызовы, когда он сохраняет.
Альтернативно отключить partial_updates: ActiveRecord::Base.partial_updates = false
Как Джош Рикард прокомментировал принятый ответ, так как Rails 3.0.X touch
больше не вызывает проверки и обратные вызовы.
Вы можете, однако, "коснуться" его вручную с помощью model.update_attribute(:updated_at,Time.now)
и пропустить проверку и вызвать обратные вызовы таким образом.
Вы можете использовать сенсорный, чтобы решить вашу проблему, поскольку ответ cwninja.
Правда, он больше не вызывает традиционные обратные вызовы в последних Rails, как упоминалось Josh Rickard. Но это вызывает срабатывание after_touch.
См. нижнюю часть этой страницы:
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
Если атрибуты не изменены, они не будут сохранены. Если вы что-то изменили во время очистки, оно должно быть сохранено.