Версионность модели Rails с утверждением

У меня есть модель, которую участники смогут обновлять, но их изменения не вступят в силу, пока администратор не утвердит их изменения. Кто-нибудь решил эту проблему и какие драгоценные камни вы бы порекомендовали для управления версиями? PaperTrail? Вестал версии?

2 ответа

Решение

Возможно, вы могли бы использовать vestal_versions с легким поворотом. Добавьте в свой контроллер действие after_update, которое откатывается до предыдущей версии, если пользователь, который внес изменение, не является администратором. Затем вы можете установить статус экземпляра как ожидающий, что предупредит администратора для проверки. Администратор тогда просто просмотрит последнюю версию и переместит ее вверх, если она будет одобрена

# model_controller.rb
after_update :rollback_if_not_admin

def rollback_if_not_admin
  unless current_user.admin?
  #roll back changes
  version = @model_instance.versions.count
  if version > 1
    @model_instance.reset_to!(version - 1)
    @model_instance.status = "pending"
  end

  flash[:notice] = "Your changes will be reflected once an admin has reviewed them"
  redirect_to @model_instance
end

Существует драгоценный камень Чертежника. Это позволяет вам создавать черновые версии записей вашей базы данных. Узнайте больше здесь. Вам нужно будет добавить интерфейс администратора.

Другие вопросы по тегам