0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 13:08:40 +08:00
discourse/db/post_migrate
Régis Hanol 41db2f76f3
FIX: Ensure each flag gets a unique name_key (#40899)
Previously, flag names with no ASCII word characters (e.g. Chinese) all
normalized to the same `name_key` of `custom_`, because `set_name_key`
stripped non-`\w` characters and Ruby's `\w` is ASCII-only. The flag
system keys lookups by `name_key` (the `disabled_flag_types` enum, the
frontend `actionByName` map), so once two flags shared a key, disabling
one of them flipped `can_act` for the whole group and hid every other
flag that shared it.

This makes `name_key` reliably unique:

- `set_name_key` falls back to `custom_flag` when the slug is empty and
appends a counter (`_2`, `_3`, ...) on collision, so distinct names
always produce distinct keys. It now only re-derives the key when the
name actually changes, keeping it stable across other saves.
- A post-deploy migration backfills existing duplicate keys and adds the
unique index on `flags.name_key` that the original `create_flags`
migration intended (`unique: true` is a no-op in `create_table`).

https://meta.discourse.org/t/405254
2026-06-24 16:37:59 +02:00
..
20260112082200_drop_reviewable_action_logs.rb DEV: Remove reviewable_ui_refresh feature flag and legacy code (#36752) 2026-02-23 10:45:36 +08:00
20260311064518_clean_existing_tag_localization_names.rb FIX: Clean localized tag names (#38488) 2026-03-12 12:54:50 +08:00
20260319054730_delete_redundant_everyone_posting_review_groups.rb FEATURE: Support group based category posting review modes (#38707) 2026-04-07 10:41:16 +08:00
20260319054731_drop_permission_from_category_posting_review_groups.rb FEATURE: Support group based category posting review modes (#38707) 2026-04-07 10:41:16 +08:00
20260330161714_drop_pinned_post_number_from_nested_topics.rb FEATURE: First iteration of nested replies (#38888) 2026-04-16 08:06:44 -05:00
20260422135650_strip_upload_label_escapes.rb FIX: Prevent backslash accumulation in upload markdown labels (#39461) 2026-06-03 18:10:38 +02:00
20260512061336_convert_reporting_improvements_everyone_to_staff.rb UX: Allow more specific enabled for options for upcoming changes (#39916) 2026-05-13 10:22:06 +10:00
20260601043020_rename_anonymous_auto_group_to_anonymous_users.rb DEV: Rename anonymous group to anonymous_users (#40435) 2026-06-02 09:29:46 +10:00
20260602104726_recalculate_topic_counters_without_small_actions.rb FEATURE: Exclude small actions from topic counters and unread tracking (#40481) 2026-06-08 08:03:55 +02:00
20260603115312_remove_admin_dashboard_sections_setting.rb DEV: Persist dashboard configuration in table and *not* on closure of the dialog (#40546) 2026-06-04 10:53:59 +08:00
20260607161322_move_unified_new_setting_from_groups.rb FEATURE: Add upcoming change for unified new view (#40631) 2026-06-09 11:34:22 +10:00
20260624140945_ensure_unique_flag_name_keys.rb FIX: Ensure each flag gets a unique name_key (#40899) 2026-06-24 16:37:59 +02:00