[deploy] Cleanup preferred_languages language_settings for users (#9641)
* Cleanup language settings for users * Remove logic for old language format * Make preferred_langagues_array.include? nil safe
This commit is contained in:
parent
5daf162629
commit
c988481004
4 changed files with 22 additions and 25 deletions
|
|
@ -245,21 +245,10 @@ class User < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
# handles both old (prefer_language_*) and new (Array of language codes) formats
|
||||
def preferred_languages_array
|
||||
return @preferred_languages_array if defined?(@preferred_languages_array)
|
||||
|
||||
if language_settings["preferred_languages"].present?
|
||||
@preferred_languages_array = language_settings["preferred_languages"].to_a
|
||||
else
|
||||
languages = []
|
||||
language_settings.each_key do |setting|
|
||||
to_split = language_settings[setting] && setting.include?("prefer_language_")
|
||||
languages << setting.split("prefer_language_")[1] if to_split
|
||||
end
|
||||
@preferred_languages_array = languages
|
||||
end
|
||||
@preferred_languages_array
|
||||
@preferred_languages_array = language_settings["preferred_languages"]
|
||||
end
|
||||
|
||||
def processed_website_url
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
<%= form_tag users_update_language_settings_path, class: "grid gap-4" do |f| %>
|
||||
<% Languages::LIST.each do |code, name| %>
|
||||
<label class="crayons-field crayons-field--checkbox">
|
||||
<%= check_box_tag "user[preferred_languages][]", code, @user.preferred_languages_array.include?(code), class: "crayons-checkbox" %>
|
||||
<%= check_box_tag "user[preferred_languages][]", code, @user.preferred_languages_array&.include?(code), class: "crayons-checkbox" %>
|
||||
<div class="crayons-field__label"><%= name %></div>
|
||||
</label>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
module DataUpdateScripts
|
||||
class CleanUpLanguageSettings
|
||||
def run
|
||||
User.where("(language_settings->'preferred_languages') IS null").find_each do |user|
|
||||
language_settings = user.language_settings
|
||||
language_settings["preferred_languages"] = []
|
||||
|
||||
language_settings["preferred_languages"] << "en" if language_settings["prefer_language_en"]
|
||||
language_settings["preferred_languages"] << "es" if language_settings["prefer_language_es"]
|
||||
language_settings["preferred_languages"] << "fr" if language_settings["prefer_language_fr"]
|
||||
language_settings["preferred_languages"] << "it" if language_settings["prefer_language_it"]
|
||||
language_settings["preferred_languages"] << "ja" if language_settings["prefer_language_ja"]
|
||||
language_settings["preferred_languages"] << "pt" if language_settings["prefer_language_pt"]
|
||||
|
||||
user.update(language_settings: language_settings)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -670,22 +670,11 @@ RSpec.describe User, type: :model do
|
|||
expect(user.reload.preferred_languages_array).to eq(%w[en ja])
|
||||
end
|
||||
|
||||
it "returns a correct array when language settings are in a new format" do
|
||||
it "returns a correct array for language settings" do
|
||||
language_settings = { estimated_default_language: "en", preferred_languages: %w[en ru it] }
|
||||
user = build(:user, language_settings: language_settings)
|
||||
expect(user.preferred_languages_array).to eq(%w[en ru it])
|
||||
end
|
||||
|
||||
it "returns a correct array when language settings are in the old format" do
|
||||
language_settings = {
|
||||
estimated_default_language: "en",
|
||||
prefer_language_en: true,
|
||||
prefer_language_ja: false,
|
||||
prefer_language_es: true
|
||||
}
|
||||
user = build(:user, language_settings: language_settings)
|
||||
expect(user.preferred_languages_array).to eq(%w[en es])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue