Что считается «лучшей практикой» или общим правилом, когда что-то должно быть обернуто в блок транзакций?Когда должна использоваться транзакция ActiveRecord?
Это прежде всего, когда вы собираетесь выполнять действия над коллекцией вещей, и хотите откат, если что-то сломается? Что-то вроде:
class User < ActiveRecord::Base
def mark_all_posts_as_read!
transaction do
posts.find_each { |p| p.update_attribute(:read, true) }
end
end
end
Есть ли другие сценарии, в которых было бы выгодно выполнять вещи внутри транзакции?
Я также использую транзакции в рейк-задачах. Я собираю много данных навалом из API, а затем делаю блок транзакций вокруг задачи 'create', чтобы ускорить вставку ... только одно соединение используется для команд вставки, а не для открытия и закрытия соединения для каждой задачи. – ScottJShea