Только один пользователь может редактировать контент одновременно - PullRequest
2 голосов
/ 27 мая 2011

Например, если вы хотите отредактировать client-site.com / pages / 5 , перейдите на admin-site.com / pages / 5 / edit .Я хочу, чтобы только один администратор одновременно имел доступ к admin-site.com / pages / 5 / edit .

Я планировал создать "editor_id" и "edit_rights_expiration_time"msgstr "столбцы в базе данных и их обновление с помощью JavaScript / серверной логики.Есть ли лучший способ реализовать эту функцию?

Я использую Rails 3.

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

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

  • Пользователь A начинает редактировать элемент и хранит последнюю измененную метку времени в качестве токена
  • Пользователь B начал редактировать элемент, а также сохраняет последнюю измененную метку времени в качестветокен
  • Пользователь Б сохраняет свои изменения.Последняя измененная временная метка не изменилась, поэтому сохранение прошло успешно
  • Пользователь A сохраняет свои изменения.Последняя измененная временная метка была изменена, поэтому их сохранение отклонено.Пользователю может быть предложена возможность разрешить конфликт (если он есть).

О, похоже, в Rails это уже есть, как упомянул @Andy Waite (+1).

2 голосов
/ 27 мая 2011

Я подозреваю, что лучший способ справиться с этим - использовать оптимистическую блокировку:

http://railscasts.com/episodes/59-optimistic-locking

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...