当默认用户选项从 false 设置为 true 时,其行为不符合预期。
它不会询问是否应将设置应用于现有用户,即使询问了,也无法正常工作。
重现步骤:
- 有一个设置,例如“在新标签页中打开外部链接”已启用。
- 将 admin - settings - user preferences -
default other external links in new tab设置为 enabled。 - 将 admin - settings - user preferences -
default other external links in new tab设置为 disabled。 - 出现一个弹出窗口:“您想将此更改应用到历史记录吗?这将更改 X 个现有用户的偏好设置。”并选择 Yes。
- 对于所有用户,“在新标签页中打开外部链接”现在已禁用。
到目前为止一切正常,但是:
- 将 admin - settings - user preferences -
default other external links in new tab设置为 enabled。 - 没有弹出窗口,并且它仍然对每个人都禁用。
预期的最后一步:
- 出现一个弹出窗口:“您想将此更改应用到历史记录吗?这将更改 X 个现有用户的偏好设置。”选择 Yes 将为所有人启用它。
这适用于所有 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).
什么都不做。