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