Возможно, вы могли бы использовать 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