Нужно ли делать проверку в случае параллельной работы с объектом 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.


Ответы (0 шт):