Etwas Logisches, aber Ärgerliches mit Flags und Benutzerleveln festgestellt

Betrachten wir diesen Fall:

  1. Ein TL1-Benutzer hat Antworten mit mehreren darin enthaltenen Links gepostet.

  2. Basierend auf der Benutzeraktion entschied der Administrator, das Vertrauensniveau des Benutzers auf 0 zu setzen, sodass alle seine Beiträge einer Genehmigung bedürfen.

  3. Anschließend erhalten die alten Beiträge des Benutzers berechtigte Flaggen. Der Administrator möchte den Flaggen zustimmen, kann es aber nicht und erhält den Fehler 422 error.

  4. Den Flaggen kann nur dann zugestimmt werden, wenn das Vertrauensniveau des Benutzers wieder auf 1 angehoben wird, da die Beiträge mehrere Links enthalten (was die Grenzen des Benutzers überschreitet!).


Ich verstehe, warum dies geschieht. Es sollte einen Fehler im Prozess des Herabstuens des Vertrauensniveaus eines Benutzers geben, aber nicht beim Annehmen der Flaggen (da es für Moderatoren so verwirrend war, warum das System ihnen nicht erlaubt, Flaggen zu übernehmen!).

Der vollständige Fehlerbericht im Admin-Bereich

Der vollständige Fehlerbericht:

ActiveRecord::RecordInvalid (Validierung fehlgeschlagen: Entschuldigung, neue Benutzer können pro Beitrag nur 2 Links setzen.)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3/lib/active_record/validations.rb:80:in `raise_validation_error'

Und dieser hier:

activerecord-6.0.3/lib/active_record/validations.rb:80:in `raise_validation_error'
activerecord-6.0.3/lib/active_record/validations.rb:53:in `save!'
activerecord-6.0.3/lib/active_record/transactions.rb:318:in `block in save!'
activerecord-6.0.3/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
activerecord-6.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
activerecord-6.0.3/lib/active_record/transactions.rb:212:in `transaction'
activerecord-6.0.3/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
activerecord-6.0.3/lib/active_record/transactions.rb:318:in `save!'
activerecord-6.0.3/lib/active_record/suppressor.rb:48:in `save!'
/var/www/discourse/app/models/post.rb:524:in `hide!'
/var/www/discourse/app/models/reviewable_flagged_post.rb:155:in `block in perform_agree_and_hide'
/var/www/discourse/app/models/reviewable_flagged_post.rb:264:in `agree'
/var/www/discourse/app/models/reviewable_flagged_post.rb:154:in `perform_agree_and_hide'
/var/www/discourse/app/models/reviewable.rb:355:in `public_send'
/var/www/discourse/app/models/reviewable.rb:355:in `block in perform'
activerecord-6.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
activerecord-6.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-6.0.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-6.0.3/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
activerecord-6.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
activerecord-6.0.3/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/app/models/reviewable.rb:353:in `perform'
/var/www/discourse/app/controllers/reviewables_controller.rb:188:in `perform'
actionpack-6.0.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-6.0.3/lib/abstract_controller/base.rb:195:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack-6.0.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport-6.0.3/lib/active_support/callbacks.rb:135:in `run_callbacks'
actionpack-6.0.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
activesupport-6.0.3/lib/active_support/notifications.rb:180:in `block in instrument'
activesupport-6.0.3/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.0.3/lib/active_support/notifications.rb:180:in `instrument'
actionpack-6.0.3/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack-6.0.3/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord-6.0.3/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-6.0.3/lib/abstract_controller/base.rb:136:in `process'
actionview-6.0.3/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-2.0.1/lib/mini_profiler/profiling_methods.rb:104:in `block in profile_method'
actionpack-6.0.3/lib/action_controller/metal.rb:190:in `dispatch'
actionpack-6.0.3/lib/action_controller/metal.rb:254:in `dispatch'
actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack-6.0.3/lib/action_dispatch/journey/router.rb:49:in `block in serve'
actionpack-6.0.3/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-6.0.3/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-6.0.3/lib/action_dispatch/routing/route_set.rb:834:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
rack-2.0.8/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.0.8/lib/rack/conditional_get.rb:38:in `call'
rack-2.0.8/lib/rack/head.rb:12:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:318:in `call'
rack-2.0.8/lib/rack/session/abstract/id.rb:259:in `context'
rack-2.0.8/lib/rack/session/abstract/id.rb:253:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/cookies.rb:648:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-6.0.3/lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack-6.0.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster-2.8.0/lib/logster/middleware/reporter.rb:43:in `call'
railties-6.0.3/lib/rails/rack/logger.rb:37:in `call_app'
railties-6.0.3/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:18:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:22:in `call'
rack-2.0.8/lib/rack/method_override.rb:22:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.0.8/lib/rack/sendfile.rb:111:in `call'
actionpack-6.0.3/lib/action_dispatch/middleware/host_authorization.rb:76:in `call'
rack-mini-profiler-2.0.1/lib/mini_profiler/profiler.rb:312:in `call'
message_bus-3.2.0/lib/message_bus/rack/middleware.rb:57:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:172:in `call'
railties-6.0.3/lib/rails/engine.rb:527:in `call'
railties-6.0.3/lib/rails/railtie.rb:190:in `public_send'
railties-6.0.3/lib/rails/railtie.rb:190:in `method_missing'
rack-2.0.8/lib/rack/urlmap.rb:68:in `block in call'
rack-2.0.8/lib/rack/urlmap.rb:53:in `each'
rack-2.0.8/lib/rack/urlmap.rb:53:in `call'
unicorn-5.5.5/lib/unicorn/http_server.rb:605:in `process_client'
unicorn-5.5.5/lib/unicorn/http_server.rb:701:in `worker_loop'
unicorn-5.5.5/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
unicorn-5.5.5/lib/unicorn/http_server.rb:144:in `start'
unicorn-5.5.5/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'
3 „Gefällt mir“