Rails, как прикоснуться к объекту Active Record без блокировки?

В моем классе фотографий у меня есть эта ассоциация.

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.

11
задан Eric Coulthard 28 September 2011 в 18:09
поделиться