# Feedback on the new Review Queue (2019)

**URL:** https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837
**Category:** Announcements
**Tags:** new-feature, review-queue
**Created:** [March 28, 2019, 4:50pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837 "2019-03-28T16:50:12Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [March 28, 2019, 4:50pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/1 "2019-03-28T16:50:12Z")

</div>

I’ve just merged in the [Review Queue](https://meta.discourse.org/t/proposal-consolidated-review-queue/105588) that has been in development for the last few months. We’ve been running it on our servers for a while and it’s passed through the hands of several developers so it’s in a good place to start testing with those Discourse users who follow the `tests-passed` branch.

Here are the notes from the commit:

* * *

This is a large refactor that merges all types of reviewable items in core Discourse (Users, Queued Posts and Flags) into one consolidated review queue.

## New Features

- One convenient place to review all content
- Reviewable items are scored behind the scenes and the highest priority items are shown first. Staff members and higher trust level users produce higher priority items.
- You can filter the review queue by status, priority, reviewable type, category and user
- The API for reviewables returns the list of actions that can be performed on an item, which means the front end application can be simpler and not duplicate all the logic.
- Data structures are built to enable non-staff level moderation of items in the near future

## Software Design Notes

The `Reviewable` model uses single table inheritance (STI), and each type of reviewable must declare a subclass, serializer and ember component. Three types currently exist: `ReviewableQueuedPost`, `ReviewableUser` and `ReviewableFlaggedPost`. Developers are encouraged to look at how other reviewable items are implemented and build their own.

Post Actions (such as flags) must now be created using the `PostActionCreator` service object. It has a much friendlier API now and returns a result object which will return the associated reviewable.

## Backwards Compatibility

REST API is maintained with the old endpoints, however deprecation warnings are logged. Third party code that is pointed at the old APIs should be updated to the new review queue API. All of the Ember.js/front end code for the old user approval / flagging interface / queued posts is removed.

In a future release we will remove the old APIs and backwards compatibility.

* * *

Please use this topic for feedback and bug reports. I’ll try to address things as quickly as possible!

---

<div class="post-metadata">

### Author: ![marcozambi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcozambi/32/119505_2.png) [@marcozambi](https://meta.discourse.org/u/marcozambi)
#### Post date: [March 29, 2019, 8:37am UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/2 "2019-03-29T08:37:01Z")

</div>

After upgrading from Discourse 2.3.0 beta 5 to beta 6 I now have 14 new notifications in the new /review page, all regarding users that need to be approved.  
Those users are either user accounts we rejected weeks ago or banned users, though.  
If I clikc on the “Reject” button I get an error message “Sorry, an error has occurred” (see picture below).

TLDR version, I have 14 notifications about already rejected/banned users and I cannot find a way to get rid of them 🙂

 ![image](https://global.discourse-cdn.com/meta/original/3X/b/0/b0cb590ae1bd955ac093f82fefd4e4ccc004a5d3.png)

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [March 29, 2019, 8:39am UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/3 "2019-03-29T08:39:05Z")

</div>

Hi,

could you look at /logs and see if you have any relevant error that could help us debug the failure please ?

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [March 29, 2019, 1:26pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/4 "2019-03-29T13:26:36Z")

</div>

So the error popping up is almost certainly that the users have posts so they can’t be deleted. I think I realise the bug in my migration now, where I was creating reviewables for users who were not approved. I think perhaps banning someone is setting them as unapproved, so they showed up again.

I’ll take a look and see how I can improve it.

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [March 29, 2019, 1:49pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/5 "2019-03-29T13:49:11Z")

</div>

Looks like we’re also missing a `admin.flags.user_percentage.summary` translation as a hover description on the percentage:  
 ![36%20AM](https://global.discourse-cdn.com/meta/original/3X/1/0/1078070d25005b6257b01f1c03d1d127e60a2956.png)

---

<div class="post-metadata">

### Author: ![marcozambi](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marcozambi/32/119505_2.png) [@marcozambi](https://meta.discourse.org/u/marcozambi)
#### Post date: [March 29, 2019, 3:09pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/6 "2019-03-29T15:09:49Z")

</div>

> [@j.jaffeux](#):
>
> could you look at /logs and see if you have any relevant erro

Aye! Here you go… This is what I see by clicking on one of the “Reject” buttons.

 ![image](https://global.discourse-cdn.com/meta/original/3X/c/8/c89543881da4b0e80506df11f15c76d70abed89f.png)

This is the Info text related to the first warning

```plaintext
create_errors_json called with unrecognized type: #&lt;Reviewable::PerformResult:0x00007fd1d233e4a0 @status=:failed, @reviewable=#&lt;ReviewableUser id: 15, type: "ReviewableUser", status: 0, created_by_id: -1, reviewable_by_moderator: true, reviewable_by_group_id: nil, claimed_by_id: nil, category_id: nil, topic_id: nil, score: 1.0, potential_spam: false, target_id: 2685, target_type: "User", target_created_by_id: nil, payload: nil, version: 5, latest_score: nil, created_at: "2016-09-27 19:25:30", updated_at: "2016-09-27 19:25:30"&gt;, @transition_to=nil&gt;

```

and this is from the second one…

```plaintext
Uncaught [object Object]
Url: https://www.forumastronautico.it/assets/ember_jquery-5dbd79abddf53926275c73f77dbe61e7351258de8d2e886bf2ce86f144368848.js
Line: 9
Column: 11652
Window Location: https://www.forumastronautico.it/review

```

If you need the backtrace let me know (lots of text)

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [March 29, 2019, 5:54pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/7 "2019-03-29T17:54:04Z")

</div>

I believe this commit will fix the inability to reject users who have posts:

[https://github.com/discourse/discourse/commit/370355d754af2f29bf37bfe0627d0e006558cba1](https://github.com/discourse/discourse/commit/370355d754af2f29bf37bfe0627d0e006558cba1)

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [March 29, 2019, 6:16pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/8 "2019-03-29T18:16:09Z")

</div>

This fixes the missing translations. Good catch @featheredtoast because it made me realise those components were admin only at the same time, which I also fixed:

[https://github.com/discourse/discourse/commit/67454c71c9611c1c6f473e1c6552917d23199e71](https://github.com/discourse/discourse/commit/67454c71c9611c1c6f473e1c6552917d23199e71)

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [March 29, 2019, 8:39pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/9 "2019-03-29T20:39:03Z")

</div>

### UX Comment

I thought I’d seen this complaint elsewhere, but I can’t find it. I[just did a g+ import](https://meta.discourse.org/t/bounty-google-private-communities-export-screenscraper-importer/108029/86) and there are 1300 users in the approval queue with entries like this:

 ![image](https://global.discourse-cdn.com/meta/original/3X/d/6/d632f38e3162e4936f2f1ea58a1488bf67a30fd1.png)

From this it’s impossible to tell why the user needs approval, and worse, the only way to find out seems to be to select the username and do a search. Is there a reason not to have the username link to their profile? Or, better, provide something about the user to know what to do about it?

And also, I presume that “Reject” rejects the user and does Something Bad. How does one clear this and say that the user is OK?

### Help! How do I fix this?

My inclination is to just remove them all from the approval queue. But I don’t know how to do that because in the user record I see:

```plaintext
 approved: true,
 approved_by_id: -1,
 approved_at: Fri, 29 Mar 2019 18:26:49 UTC +00:00,

```

So I guess this approval must be in some other table?

EDIT: This sounds a little like [Needs Approval feature (Nothing to Approve)](https://meta.discourse.org/t/needs-approval-feature-nothing-to-approve/112943) and [SSO user unnecessary approval with 403 error](https://meta.discourse.org/t/sso-user-unnecessary-approval-with-403-error/112931).

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [April 1, 2019, 3:42pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/11 "2019-04-01T15:42:14Z")

</div>

@pfaffman can you help me track this down? You said you did an import, but was it before you ran database migrations? Was `must_approve_users` set to true?

---

<div class="post-metadata">

### Author: ![OvermindDL1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/overminddl1/32/115252_2.png) [@OvermindDL1](https://meta.discourse.org/u/OvermindDL1)
#### Post date: [April 1, 2019, 4:01pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/12 "2019-04-01T16:01:49Z")

</div>

I updated from the latest a few weeks ago to just now, site is not loading (the Oops message) and shows this in the logs a _lot_:

```ruby
Failed to handle exception in exception app middleware : PG::UndefinedTable: ERROR: relation "queued_posts" does not exist
LINE 8: WHERE a.attrelid = '"queued_posts"'::regclass
                                          ^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
                     c.collname, col_description(a.attrelid, a.attnum) AS comment
                FROM pg_attribute a
                LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
                LEFT JOIN pg_type t ON a.atttypid = t.oid
                LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
               WHERE a.attrelid = '"queued_posts"'::regclass
                 AND a.attnum > 0 AND NOT a.attisdropped
               ORDER BY a.attnum

```

```plaintext
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-mini-profiler-1.0.2/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-mini-profiler-1.0.2/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:63:in `block (2 levels) in query'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:62:in `block in query'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:579:in `block (2 levels) in log'
/usr/local/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:578:in `block in log'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:569:in `log'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:61:in `query'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:757:in `column_definitions'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:113:in `columns'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/schema_cache.rb:69:in `columns'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/connection_adapters/schema_cache.rb:75:in `columns_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/model_schema.rb:466:in `load_schema!'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/attributes.rb:234:in `load_schema!'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/attribute_decorators.rb:51:in `load_schema!'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/model_schema.rb:459:in `block in load_schema'
/usr/local/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/model_schema.rb:456:in `load_schema'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/model_schema.rb:346:in `attribute_types'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/model_schema.rb:370:in `type_for_attribute'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/table_metadata.rb:33:in `type'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/predicate_builder.rb:51:in `build'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/predicate_builder.rb:107:in `block in expand_from_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/predicate_builder.rb:71:in `each'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/predicate_builder.rb:71:in `flat_map'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/predicate_builder.rb:71:in `expand_from_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/predicate_builder.rb:21:in `build_from_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/where_clause_factory.rb:19:in `build'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/query_methods.rb:591:in `where!'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/relation/query_methods.rb:584:in `where'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/querying.rb:12:in `where'
/var/www/discourse/app/models/queued_post.rb:39:in `new_posts'
/var/www/discourse/app/models/queued_post.rb:43:in `new_count'
/var/www/discourse/app/serializers/current_user_serializer.rb:192:in `post_queue_new_count'
(eval):34:in `_fast_attributes'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:456:in `attributes'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:480:in `_serializable_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:359:in `serializable_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:347:in `as_json'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/json/encoding.rb:35:in `encode'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/json/encoding.rb:22:in `encode'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/core_ext/object/json.rb:41:in `to_json'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:331:in `to_json'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:40:in `dump'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/multi_json-1.13.1/lib/multi_json/adapters/oj.rb:40:in `dump'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/multi_json-1.13.1/lib/multi_json/adapter.rb:25:in `dump'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/multi_json-1.13.1/lib/multi_json.rb:139:in `dump'
/var/www/discourse/app/controllers/application_controller.rb:539:in `preload_current_user_data'
/var/www/discourse/app/controllers/application_controller.rb:354:in `preload_json'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:426:in `block in make_lambda'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:198:in `block (2 levels) in halting'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:199:in `block in halting'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:513:in `block in invoke_before'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:513:in `each'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:513:in `invoke_before'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:131:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/rescue.rb:22:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/notifications.rb:168:in `block in instrument'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/notifications.rb:168:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/params_wrapper.rb:256:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/railties/controller_runtime.rb:24:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/abstract_controller/base.rb:134:in `process'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionview-5.2.2.1/lib/action_view/rendering.rb:32:in `process'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal.rb:191:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal.rb:252:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/route_set.rb:52:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/route_set.rb:34:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/mapper.rb:48:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/journey/router.rb:52:in `block in serve'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/journey/router.rb:35:in `each'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/journey/router.rb:35:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/route_set.rb:840:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-protection-2.0.5/lib/rack/protection/frame_options.rb:31:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:32:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/tempfile_reaper.rb:15:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/conditional_get.rb:25:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/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:216:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/session/abstract/id.rb:232:in `context'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/session/abstract/id.rb:226:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/cookies.rb:670:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:98:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/logster-2.1.2/lib/logster/middleware/reporter.rb:30:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2.1/lib/rails/rack/logger.rb:38:in `call_app'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2.1/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:16:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/method_override.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/sendfile.rb:111:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiler.rb:171:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/message_bus-2.2.0/lib/message_bus/rack/middleware.rb:57:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:163:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2.1/lib/rails/engine.rb:524:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2.1/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/railties-5.2.2.1/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/urlmap.rb:68:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/urlmap.rb:53:in `each'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rack-2.0.6/lib/rack/urlmap.rb:53:in `call'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:606:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:701:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:549:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/unicorn-5.4.1/lib/unicorn/http_server.rb:142:in `start'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/unicorn-5.4.1/bin/unicorn:126:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.5.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.5.0/bin/unicorn:23:in `<main>'

```

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [April 1, 2019, 4:04pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/13 "2019-04-01T16:04:05Z")

</div>

Was there an error with the upgrade? The file `app/models/queued_post.rb` does not exist anymore and that error message indicates it’s still being used.

---

<div class="post-metadata">

### Author: ![OvermindDL1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/overminddl1/32/115252_2.png) [@OvermindDL1](https://meta.discourse.org/u/OvermindDL1)
#### Post date: [April 1, 2019, 4:06pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/14 "2019-04-01T16:06:40Z")

</div>

Nothing reported, everything seemed successful. I’m doing a full rebuild from the console right now to see if that fixes it.

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [April 1, 2019, 4:09pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/15 "2019-04-01T16:09:55Z")

</div>

It already should handle the `PerformResult` because it has an `errors` property. In fact there’s a test for this:

> <https://github.com/discourse/discourse/blob/main/spec/requests/reviewables_controller_spec.rb#L233-L239>

---

<div class="post-metadata">

### Author: ![OvermindDL1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/overminddl1/32/115252_2.png) [@OvermindDL1](https://meta.discourse.org/u/OvermindDL1)
#### Post date: [April 1, 2019, 4:16pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/16 "2019-04-01T16:16:31Z")

</div>

> [@OvermindDL1](#):
>
> Nothing reported, everything seemed successful. I’m doing a full rebuild from the console right now to see if that fixes it.

A full rebuild fixed it, that was fun. ^.^;

---

<div class="post-metadata">

### Author: ![finalbarrage](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/finalbarrage/32/135857_2.png) [@finalbarrage](https://meta.discourse.org/u/finalbarrage)
#### Post date: [April 1, 2019, 4:26pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/17 "2019-04-01T16:26:41Z")

</div>

## Some constructive feedback

There are some gamebreaking problems with this as it stands now, ill run through them here.

- When i click on a flagged comment, it does not jump directly to the comment in question in the thread. I have to use the search feature to locate the comment that got flagged. This is very stressful on mobile, and tedious overall.

- When a post gets deleted by the system, i lose the ability to go to the thread in question. I prefer to read the thread as it is, and not through the flag menu.  

- I dont know if this is intentional or not, but when a flag is “ignored”, i thought that was only supposed to affect that one person, leaving the flag to be death with by someone else. Please correct me if im wrong. Currently, if someone ignores a flag, it gets ignored for everyone. If this is intentional, then look past this point, however, if its ment to only ignore for you, then thats not working properly.

That being said, i love this update as a whole. Just a few minor things to patch up!

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [April 1, 2019, 4:29pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/18 "2019-04-01T16:29:35Z")

</div>

Thanks for the feedback. For the Internal Server Error, could you check `/logs` and tell us what the actual error was?

---

<div class="post-metadata">

### Author: ![finalbarrage](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/finalbarrage/32/135857_2.png) [@finalbarrage](https://meta.discourse.org/u/finalbarrage)
#### Post date: [April 1, 2019, 4:30pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/19 "2019-04-01T16:30:48Z")

</div>

Am i able to do that as a regular moderator? If so, where do i enter the /logs command. Pardon, im relatively new, started at the end of last year.

edit: Im in the logs now, but i dont know what to look for.

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [April 1, 2019, 4:33pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/20 "2019-04-01T16:33:19Z")

</div>

It’s a bit tricky to explain, but you’ll want the error that happened right when you clicked “Not Spam”. You might be able to find it by timestamp. When you’re viewing it, you should see the path similar to `/review/(some number)/perform/not_spam.json` with an error message.

---

<div class="post-metadata">

### Author: ![finalbarrage](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/finalbarrage/32/135857_2.png) [@finalbarrage](https://meta.discourse.org/u/finalbarrage)
#### Post date: [April 1, 2019, 4:35pm UTC](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837/21 "2019-04-01T16:35:12Z")

</div>

Alright i have to go, but i’ll try to recreate the scenario once i get home with a new account. If i cant figure it out then i’ll see if Bart can look into it.

[Next page](https://meta.discourse.org/t/feedback-on-the-new-review-queue-2019/112837.md?page=2)
