В моем классе фотографий у меня есть эта ассоциация.
belongs_to :user, :touch => true
Однажды я получил это исключение.
A ActiveRecord::StatementInvalid occurred in photos#update:
Mysql::Error: Deadlock found when trying to get lock; try restarting transaction:
UPDATE `users` SET `updated_at` = '2011-09-20 14:17:44' WHERE `users`.`id` = 6832
production/ruby/1.8/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract_adapter.rb:207:in `log'
Что делать, чтобы предотвратить появление таких исключений в будущем? Я хотел бы, чтобы оператор обновления, показанный в ошибке, не использовал блокировку, если это было возможно. Я не думаю, что использование оптимистической блокировки будет работать в этом случае, потому что оптимистическая блокировка, вероятно, приведет к активации ActiveRecord:: StaleObjectError.