# Since 2.8.0beta2 update some users can't get to preferences (etc)

**URL:** https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952
**Category:** Support
**Created:** [June 15, 2021, 8:20pm UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952 "2021-06-15T20:20:45Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![elijah](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elijah/32/104055_2.png) [@elijah](https://meta.discourse.org/u/elijah)
#### Post date: [June 15, 2021, 8:20pm UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/1 "2021-06-15T20:20:45Z")

</div>

Earlier this week I updated from 2.7.0.beta2 to 2.8.0.beta2. Since then my regular account (but not my admin account) cannot get to any of my /u/ pages. I get a 404 error instead. This happens on desktop (Firefox 84 and 89) and mobile (tested on Android), and after logging out, clearing cache, and returning.

I suspect this change is related to the issue:

> [@2.8.0.beta2: User Directory Custom Fields, Tagging Enabled by Default, User-Selectable Badge Display, and more](https://meta.discourse.org/t/2-8-0-beta2-user-directory-custom-fields-tagging-enabled-by-default-user-selectable-badge-display-and-more/193148/1):
>
> ### ser-selectable badge display on user card
> 
> Out of the box, the user card will display the user’s trust level badge, followed by the two “highest” level badges - gold first, if no gold then silver, if no silver then bronze. Users can now select the 2 badges they wish to display by marking the badge as favorite.

I have had the `discourse-user-card-badges` plugin installed (it shows as version `0.1`) since well before this update and that change plus the error below make me think maybe the plugin doesn’t play nice with the changes? If so, shouldn’t the update disable the plugin or ask me to disable it?

```plaintext
activemodel (6.1.3.2) lib/active_model/attribute_methods.rb:469:in `method_missing'
plugins/discourse-user-card-badges/plugin.rb:40:in `block (2 levels) in activate!'
(eval):93:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:343:in `as_json'
activesupport (6.1.3.2) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (6.1.3.2) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (6.1.3.2) lib/active_support/core_ext/object/json.rb:43:in `to_json'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:331:in `to_json'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapter.rb:25:in `dump'
multi_json (1.15.0) lib/multi_json.rb:139:in `dump'
app/controllers/application_controller.rb:519:in `render_json_dump'
app/controllers/users_controller.rb:94:in `block (2 levels) in show'
actionpack (6.1.3.2) lib/action_controller/metal/mime_responds.rb:214:in `respond_to'
app/controllers/users_controller.rb:86:in `show'
actionpack (6.1.3.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.3.2) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.1.3.2) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:117:in `block in run_callbacks'
app/controllers/application_controller.rb:395:in `block in with_resolved_locale'
i18n (1.8.10) lib/i18n.rb:314:in `with_locale'
app/controllers/application_controller.rb:395:in `with_resolved_locale'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack (6.1.3.2) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.3.2) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `instrument'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord (6.1.3.2) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.1.3.2) lib/abstract_controller/base.rb:165:in `process'
actionview (6.1.3.2) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.3.2) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'

actionpack (6.1.3.2) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.1.3.2) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:842:in `call'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
actionpack (6.1.3.2) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:355:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (6.1.3.2) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.9.6) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.1.3.2) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.1.3.2) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
rack-mini-profiler (2.3.2) lib/mini_profiler/profiler.rb:249:in `call'

message_bus (3.3.6) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:177:in `call'
railties (6.1.3.2) lib/rails/engine.rb:539:in `call'
railties (6.1.3.2) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.3.2) lib/rails/railtie.rb:207:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (6.0.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.0.0) lib/unicorn/http_server.rb:732:in `worker_loop'
unicorn (6.0.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.0.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.0.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load'
vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'

```

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [June 15, 2021, 8:32pm UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/2 "2021-06-15T20:32:35Z")

</div>

Is this a third party plugin? So you have a path forward, to disable the plugin?

---

<div class="post-metadata">

### Author: ![elijah](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elijah/32/104055_2.png) [@elijah](https://meta.discourse.org/u/elijah)
#### Post date: [June 15, 2021, 8:33pm UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/3 "2021-06-15T20:33:45Z")

</div>

The plugin appears to be official. Clicking on it takes me to:

[https://github.com/discourse/discourse-user-card-badges](https://github.com/discourse/discourse-user-card-badges)

And yes, disabling the plugin fixes the 404. My question is why that needs to be a manual step, given that I thought this was an official plugin and would continue to work.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [June 15, 2021, 8:37pm UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/4 "2021-06-15T20:37:05Z")

</div>

Is this functionality that we moved from the plugin to core?

We should put a deprecation notice on the plugin in that case.. what do you think @neil?

---

<div class="post-metadata">

### Author: ![elijah](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elijah/32/104055_2.png) [@elijah](https://meta.discourse.org/u/elijah)
#### Post date: [June 15, 2021, 8:40pm UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/5 "2021-06-15T20:40:02Z")

</div>

I will note that before posting I had checked and saw the last commit on the plugin was more recent than the 2.8.0beta2 release. Looking again I see the commit is from a “bot” user so might not be indicative of much.

> [@codinghorror](#):
>
> Is this functionality that we moved from the plugin to core?

Looking more closely, I don’t think it is exactly the same. The badge appeared as a large image in the lower left corner of the user card. This new core functionality seems to control small boxes with tiny badge images and a badge name along the bottom of the user card.

This post [Why does eviltrout have a garbage man badge?](https://meta.discourse.org/t/why-does-eviltrout-have-a-garbage-man-badge/28146) shows an early version of the badge feature:

[![](https://global.discourse-cdn.com/meta/optimized/3X/9/7/9732e18da84b0c90752d5de26a957ab113676a10_2_690x227.png) ](https://global.discourse-cdn.com/meta/optimized/3X/9/7/9732e18da84b0c90752d5de26a957ab113676a10_2_690x227.png)

As it existed prior to this update, the selection was limited to images associated with achievements earned. I have attached custom images to all badges on my forum to make such user card badges prettier. (The default ones are, um, “garbage”.)

---

<div class="post-metadata">

### Author: ![neil](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neil/32/102150_2.png) [@neil](https://meta.discourse.org/u/neil)
#### Post date: [June 15, 2021, 8:59pm UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/6 "2021-06-15T20:59:57Z")

</div>

I’m guessing it’s the new `is_favorite` column added to the UserBadges table.

The SQL is probably broken now.

```plaintext
UserBadge.attribute_names.map do |name|
              if name == 'is_favorite'
                "BOOL_OR(user_badges.#{name}) AS is_favorite"
              else
                "MAX(user_badges.#{name}) AS #{name}"
              end
            end

```

---

<div class="post-metadata">

### Author: ![martin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/martin/32/491371_2.png) [@martin](https://meta.discourse.org/u/martin)
#### Post date: [June 16, 2021, 12:33am UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/10 "2021-06-16T00:33:03Z")

</div>

I’ve just merged a fix for the plugin:

[https://github.com/discourse/discourse-user-card-badges/pull/19](https://github.com/discourse/discourse-user-card-badges/pull/19)

The `image` column was removed from `Badge` in [UX: Add image uploader widget for uploading badge images (#12377) · discourse/discourse@a23d0f9 · GitHub](https://github.com/discourse/discourse/commit/a23d0f996132746b29c17644a58b3bd00c7144ae), and we partially updated the plugin then but missed some places.

> [@elijah](#):
>
> My question is why that needs to be a manual step, given that I thought this was an official plugin and would continue to work.

While we endeavour to keep core changes from breaking plugins, sometimes we either miss usages or our plugins are lacking test coverage (we run tests for all official plugins every time a change is made to core). In the commit above I added more tests to the discourse-user-card-badges plugin to prevent any similar issues in future.

---

<div class="post-metadata">

### Author: ![elijah](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elijah/32/104055_2.png) [@elijah](https://meta.discourse.org/u/elijah)
#### Post date: [June 16, 2021, 3:30am UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/11 "2021-06-16T03:30:00Z")

</div>

> [@martin](#):
>
> While we endeavour to keep core changes from breaking plugins, sometimes we either miss usages or our plugins are lacking test coverage (we run tests for all official plugins every time a change is made to core).

I get that mistakes happen. When I wrote that, I thought this plugin’s functionality was duplicated by a new core feature. Only after exploring that feature further did I realize they are different things.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [July 16, 2021, 3:30am UTC](https://meta.discourse.org/t/since-2-8-0beta2-update-some-users-cant-get-to-preferences-etc/193952/12 "2021-07-16T03:30:51Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
