Что произойдет, если два человека внесут изменения одновременно - PullRequest
1 голос
/ 12 июня 2010

Это может быть глупый вопрос, но я хотел знать, что произойдет, если два пользователя одновременно редактируют некоторые данные, а затем оба нажимают кнопку «Отправить» одновременно, я предположил, что Rails обрабатывает запросы один за другим, и поэтому кто-то получит ошибку сообщение, но верно ли это?

Спасибо

Как только один человек отредактировал данные, я больше не хочу, чтобы они были доступны или редактировались, что обрабатывается валидациями

Я получил это подтверждение и в моей модели

def account_active
    if self.active == true
      return true
    else
      return false
    end
end

Где активен логический набор в контроллере, если проверки пройдены

Ответы [ 4 ]

2 голосов
/ 12 июня 2010

Как уже упоминалось в других ответах, побеждает последняя запись.

Возможно, вы не думаете, что это проблема, но из-за отсутствия пессимистической блокировки, которая не позволяет двум пользователям одновременно открывать одну и ту же форму редактирования, оба пользователя могут подумать, что внесенные изменения будут сохранены.

Существует способ обойти это путем использования номера версии или метки времени на ваших моделях, которые система может использовать, чтобы сообщить «пользователь редактировал версию 1, но теперь есть версия 2» и не дать второму пользователю переопределить первого пользователя. написать.

Потрясающая серия Railscasts Райана Бейтса, рассказывающая об основах ее настройки в Railscast 59: оптимистическая блокировка .

1 голос
/ 12 июня 2010

Ваш демон веб-сервера будет обрабатывать запросы один за другим;какой запрос будет обработан последним, он станет самым новым обновлением.Никто не получит сообщение об ошибке, если вы не напишите некоторую логику для обработки таких случаев.

0 голосов
/ 12 июня 2010

На ваш первоначальный вопрос ответили, но я добавлю следующее:

Для проверки вы можете просто сделать следующее

def account_active
  self.active?
end

Ruby неявно возвращает последнюю строку метода.

0 голосов
/ 12 июня 2010

Как и во всех гоночных условиях, включающих слепую запись, побеждает последняя, ​​если вы не предпримете шаги, чтобы изменить это.

...