Нужно ли делать проверку в случае параллельной работы с объектом active record?
Пример желаемого действия в контроллере Ruby on Rails.
class ElementController < ApplicationController
def update
begin
element = Element.find(params[:id])
element.counter += 1
if element.counter == 10
element.destroy
redirect_to element_path(element), notice: "Element deleted"
end
else
element.save
redirect_to element_path(element), notice: "Element updated"
end
rescue ActiveRecord::RecordNotFound
redirect_to :back, alert: "Failed to update unknown element"
end
end
end
Чтоб будет если два пользователя параллельно выполнят данное действие, если element.counter == 9
? Как я понимаю, у одного удалиться, а что будет у другого? Меня беспокоит возможные локи или дедлоки в БД.
Нужно ли писать проверку, удалось ли обновить или удалить элемент?
Возможно ли определить, был ли объект удален другим пользователем, вместо того, что не был найден по ID?
База данных MySQL.