「デフォルトのユーザーオプションを歴史的に適用する」は一方通行

デフォルトのユーザーオプションが false から true に設定された場合、期待どおりに動作しません。
既存のユーザーに変更を適用するかどうか尋ねられず、たとえ尋ねられたとしても機能しません。

再現手順:

  • 「外部リンクを新しいタブで開く」のような設定を有効にする
  • 管理 - 設定 - ユーザー設定 - 外部リンクを新しいタブで開く を有効にする
  • 管理 - 設定 - ユーザー設定 - 外部リンクを新しいタブで開く を無効にする
  • ポップアップ この変更を履歴に適用しますか?これにより、X 人の既存ユーザーの設定が変更されます。 が表示され、「はい」を選択する
  • すべてのユーザーで「外部リンクを新しいタブで開く」が無効になる

ここまでは順調ですが:

  • 管理 - 設定 - ユーザー設定 - 外部リンクを新しいタブで開く を有効にする
  • ポップアップは表示されず、全員に対して無効のままです。

期待される最後のステップ:

  • ポップアップ この変更を履歴に適用しますか?これにより、X 人の既存ユーザーの設定が変更されます。 が表示され、「はい」を選択すると全員に対して有効になる

これはすべての default_ ユーザー設定に当てはまります。

これは こちらこちら に関連しているようです。

previous_value = SiteSetting.public_send(id) || "" if update_existing_users

これは、設定が false の場合に previous_value"" に設定し、

UserOption.where(user_option => previous_value).update_all(attrs)

そして

json[:user_count] = UserOption.where(user_option => previous_value).

は何も行いません。

「いいね!」 9

PRはこちらです。

「いいね!」 4

このトピックは、最後の返信から3日後に自動的にクローズされました。新しい返信は許可されていません。